код:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class legmove : MonoBehaviour
{
bool cl = false;
public GameObject barrier; //спрайт ограничения
public Transform centre; // центральная точка
public legmove leg;//дубликат для проверки точки привязки обьекта с тем же сскриптом
public Transform dot;//точка привязки
Vector3 point;
void FixedUpdate()
{
if (!cl)
{
this.transform.position = new Vector3(dot.transform.position.x, dot.transform.position.y, -0.03f); //перемещение обьекта к привязанной точке
}
if (cl)
{
for (int i = 0; i < Input.touchCount; i++)
{
if (Input.GetTouch(i).phase == TouchPhase.Moved )
{
Vector3 p = Camera.main.ScreenToWorldPoint(Input.GetTouch(i).position);
point = centre.transform.position;
p.z = this.transform.position.z;
this.transform.position = p;
this.transform.position = point + Vector3.ClampMagnitude(transform.position - point, 4.5f);//ограничение для перемещения
}
}
}
}
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "wall")
{
cl = false;
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "dot" && collision.transform != leg.dot)
{
dot = collision.transform;
}
}
private void OnMouseDown()
{
barrier.SetActive(true);
cl = true;
}
private void OnMouseUp()
{
cl = false;
barrier.SetActive(false);
}
}
using System.Collections.Generic;
using UnityEngine;
public class legmove : MonoBehaviour
{
bool cl = false;
public GameObject barrier; //спрайт ограничения
public Transform centre; // центральная точка
public legmove leg;//дубликат для проверки точки привязки обьекта с тем же сскриптом
public Transform dot;//точка привязки
Vector3 point;
void FixedUpdate()
{
if (!cl)
{
this.transform.position = new Vector3(dot.transform.position.x, dot.transform.position.y, -0.03f); //перемещение обьекта к привязанной точке
}
if (cl)
{
for (int i = 0; i < Input.touchCount; i++)
{
if (Input.GetTouch(i).phase == TouchPhase.Moved )
{
Vector3 p = Camera.main.ScreenToWorldPoint(Input.GetTouch(i).position);
point = centre.transform.position;
p.z = this.transform.position.z;
this.transform.position = p;
this.transform.position = point + Vector3.ClampMagnitude(transform.position - point, 4.5f);//ограничение для перемещения
}
}
}
}
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "wall")
{
cl = false;
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "dot" && collision.transform != leg.dot)
{
dot = collision.transform;
}
}
private void OnMouseDown()
{
barrier.SetActive(true);
cl = true;
}
private void OnMouseUp()
{
cl = false;
barrier.SetActive(false);
}
}