У меня на объекте висит скрипт для передвижения по клику (или за мышью), но проблема в том что если кликнуть по самому объекту то он начинает "взлетать". Пробовал в инспекторе ставить Freeze position - не помогло.
Сам код:
Синтаксис:
Используется csharp
public class playerMove : MonoBehaviour {
Vector3 curPosition;
Vector3 nextPosition;
public float speed;
public bool isMove = false;
GameObject obj;
// Use this for initialization
void Start () {
isMove = false;
curPosition = transform.position;
nextPosition = transform.position;
obj = GameObject.Find ("Cube");
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown (0) || Input.GetMouseButton (0)) {
isMove = true;
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out hit)) {
nextPosition = hit.point;
}
}
if (curPosition != nextPosition && isMove == true) {
transform.position = Vector3.MoveTowards(transform.position, nextPosition, Time.deltaTime * speed);
transform.LookAt(nextPosition);
if(transform.position == nextPosition){
isMove = false;
}
}
}
}
Vector3 curPosition;
Vector3 nextPosition;
public float speed;
public bool isMove = false;
GameObject obj;
// Use this for initialization
void Start () {
isMove = false;
curPosition = transform.position;
nextPosition = transform.position;
obj = GameObject.Find ("Cube");
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown (0) || Input.GetMouseButton (0)) {
isMove = true;
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out hit)) {
nextPosition = hit.point;
}
}
if (curPosition != nextPosition && isMove == true) {
transform.position = Vector3.MoveTowards(transform.position, nextPosition, Time.deltaTime * speed);
transform.LookAt(nextPosition);
if(transform.position == nextPosition){
isMove = false;
}
}
}
}
Как это можно исправить? Может,как то проверить куда именно попал луч?(но как?)
За ранее большое спасибо!