Всем привет! Искал пример скрипта в котором реализована возможность перемещения объекта как с зажатой кнопкой мыши, так и по обычному клику. Нашел следующий скрипт и не совсем понял как его использовать, он даже не добавляется к объектам. Помогите разобраться как его использовать.
Code
using UnityEngine;
public class TP_MoveByMouse
{
private static TP_MoveByMouse singelton = null;
private Vector3 movePoint = new Vector3(0,0.9f,0);
private float distance = 0;
private TP_MoveByMouse()
{
}
public static TP_MoveByMouse GetInstance()
{
if(singelton != null)
{
return singelton;
}
var x = new TP_MoveByMouse();
return x;
}
public void MoveByMouseKlick()
{
var player = GameObject.Find("Capsule");
var playerCurrentPos = player.transform.position;
if (Input.GetMouseButton(0))
{
movePoint = RayCastLineTest(playerCurrentPos);
GetDistance(player);
playerCurrentPos = player.transform.position;
if (!player)
return;
}
if(distance > 0.1f)
{
var speed = 10f;
var moveSpeed = speed * Time.deltaTime;
var moveStep = movePoint - player.transform.position;
moveStep.Normalize();
player.transform.LookAt(movePoint);
player.transform.position = playerCurrentPos + (moveStep * moveSpeed);
playerCurrentPos = player.transform.position;
GetDistance(player);
}
}
private void GetDistance(GameObject player)
{
distance = Vector3.Distance(player.transform.position, movePoint);
Debug.Log(string.Format("Distance: {0}", distance));
}
public Vector3 RayCastLineTest(Vector3 playerLoc)
{
var hit = new RaycastHit();
Ray ray = (Camera.main.ScreenPointToRay(Input.mousePosition) );
Physics.Raycast(ray, out hit);
Debug.DrawLine(Camera.main.transform.position, hit.point);
return hit.transform.tag == "CanMoveOn" ? new Vector3(hit.point.x,hit.point.y + 0.9f,hit.point.z) : playerLoc;
}
}