public class ClickAndMove : MonoBehaviour {
private float SPEED_SPHERE = 10.0F;
public GameObject mSphere;
private Vector3 mDestinationPosition;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown (0)) {
ClickTerrian();
}
if (mDestinationPosition.x != 0.0F && mDestinationPosition.z != 0.0F) {
SphereMove ();
}
}
/*
点击Terrian
*/
private void ClickTerrian(){
RaycastHit raycastHit;
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast (ray, out raycastHit)) {
if(raycastHit.transform.tag == "Terrain"){
mDestinationPosition = raycastHit.point;
}
}
}
/*
物体移动
*/
private void SphereMove(){
if(mSphere != null && !PositionEqualInXZ(mSphere.transform.position,mDestinationPosition)){
mSphere.transform.position = Vector3.MoveTowards(mSphere.transform.position,mDestinationPosition,Time.deltaTime*SPEED_SPHERE);
}
}
/*
判断物体是否到达目的地
v1,v2分别代表物体的位置以及目的地
*/
private bool PositionEqualInXZ(Vector3 v1,Vector3 v2){
if (Vector3.Distance(v1,v2)<1.0F) {
return true;
}
return false;
}
}