您的位置:首页 > 移动开发 > Unity3D

Unity之路(七):游戏对象跟随鼠标移动示例

2016-08-19 21:59 281 查看
public float speed = 1.0f; // 角色移动速度
private Vector3 target; // 目标位置
private bool isOver = true; // 移动是否结束

void Update () {
if (Input.GetMouseButton(0)) {
GetMonsePos();
}
MoveTo(target);
}

// 1 获取鼠标点击的位置
public void GetMonsePos()
{
// a 创建射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);// 从摄像机发射出一条经过鼠标当前位置的射线
// b 发射射线
RaycastHit hitInfo = new RaycastHit();
if (Physics.Raycast(ray, out hitInfo)) {
// 获取碰撞点位置
if (hitInfo.collider.name == "Plane") {
target = hitInfo.point;
target.y = 0.5f;// 地面的y坐标为0,而cube的y必须为0.5f才能看得见
isOver = false;
}
}
}

// 2 让角色移动到目标位置
public void MoveTo(Vector3 tar) {
if (!isOver){
Vector3 v1 = tar - transform.position;
transform.position += v1.normalized * speed * Time.deltaTime;
// 到达目标位置
if (Vector3.Distance(tar, transform.position) <= 0.3f) {
isOver = true;
transform.position = tar;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: