逐点运动
1.移动到鼠标点击处停止
描述:物体cube运动到鼠标点击处并停止运动
在上节基础上我们增添了这些内容:
首先,定义3个私有变量,鼠标点击位置endPoint(Vector3类型)、物体cube距点击处的距离长度s(float类型)、每帧cube移动的距离长度dis(float类型);
然后,在Update()函数中,第一个if条件判断中添加:获取endPoint位置,计算s长度,令dis为0;第二个if条件判断中添加:每帧dis累加,判断dis是否不小于s,若dis大于等于s,说明cube移动到点击处,使moveFlag置为0不再移动,并将endPoint赋给cube的位置,使得cube最终停止在该位置。
using UnityEngine;
using System.Collections;
public class LineMove : MonoBehaviour
{
public GameObject cube;
private Camera _camera;
private Vector3 screenV;
private float hudu;
private float speed = 3;
private float dx;
private float dy;
private int moveflag = 0;
private Vector3 endPoint;
private float s;
private float dis;
void Start()
{
_camera = Camera.main;
screenV = _camera.WorldToScreenPoint(cube.transform.position);
}
void Update ()
{
if(Input.GetMouseButtonDown(0))
{
Vector3 dianV = Input.mousePosition;
Vector3 cubePosition = cube.transform.position;
dianV.z = screenV.z;
Vector3 wv = _camera.ScreenToWorldPoint(dianV);
endPoint = wv;
float ddx = wv.x - cubePosition.x;
float ddy = wv.y - cubePosition.y;
s = Mathf.Sqrt(ddx * ddx + ddy * ddy);
hudu = Mathf.Atan2(ddy, ddx);
dx = speed * Math