Используемый код:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class legmove : MonoBehaviour
{
public float speed = 10f;
public GameObject barrier;//спрайт барьера
public Rigidbody2D leg;//перемещаемый объект
public Vector3 dot;//координаты точки
public Transform centre;//координаты якоря
bool click = false;
Vector3 tap;//координаты нажатия
void Update()
{
tap = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
void FixedUpdate()
{
if (click)
{
if (Vector2.Distance(centre.position, leg.position) < 4.5f)
leg.velocity = (tap - leg.transform.position) * speed;
}
else
{
leg.velocity = (dot - leg.transform.position) * speed;
}
}
private void LateUpdate()
{
if(click)
{
if (Vector2.Distance(centre.position, leg.position) >= 4.5f)
leg.transform.position = centre.position + Vector3.ClampMagnitude(leg.transform.position - centre.position, 4.5f);
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "dot")
{
dot = collision.transform.position;
dot.z = -0.21f;
}
}
private void OnMouseDown()
{
click = true;
barrier.SetActive(true);
leg.bodyType = RigidbodyType2D.Dynamic;
}
private void OnMouseUp()
{
click = false;
barrier.SetActive(false);
leg.bodyType = RigidbodyType2D.Kinematic;
}
}
using System.Collections.Generic;
using UnityEngine;
public class legmove : MonoBehaviour
{
public float speed = 10f;
public GameObject barrier;//спрайт барьера
public Rigidbody2D leg;//перемещаемый объект
public Vector3 dot;//координаты точки
public Transform centre;//координаты якоря
bool click = false;
Vector3 tap;//координаты нажатия
void Update()
{
tap = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
void FixedUpdate()
{
if (click)
{
if (Vector2.Distance(centre.position, leg.position) < 4.5f)
leg.velocity = (tap - leg.transform.position) * speed;
}
else
{
leg.velocity = (dot - leg.transform.position) * speed;
}
}
private void LateUpdate()
{
if(click)
{
if (Vector2.Distance(centre.position, leg.position) >= 4.5f)
leg.transform.position = centre.position + Vector3.ClampMagnitude(leg.transform.position - centre.position, 4.5f);
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "dot")
{
dot = collision.transform.position;
dot.z = -0.21f;
}
}
private void OnMouseDown()
{
click = true;
barrier.SetActive(true);
leg.bodyType = RigidbodyType2D.Dynamic;
}
private void OnMouseUp()
{
click = false;
barrier.SetActive(false);
leg.bodyType = RigidbodyType2D.Kinematic;
}
}
Как можно заменить
Синтаксис:
Используется csharp
leg.transform.position = centre.position + Vector3.ClampMagnitude(leg.transform.position - centre.position, 4.5f);