射线

public GameObject _player;

bool isMove = false;

Vector3 _moveTarget;

public float _speed = 1f;

void Update () {

if (Input.GetMouseButtonDown(0)) {

// 从摄像机发射一条经过鼠标当前位置的射线 用射线接收

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

// 结构体 获取射线返回的信息

RaycastHit hit;

// Physics.Raycast 在场景中投下可以与所有碰撞器碰撞的一条光线 参数1 有方向有起点的射线

// bool值接收 当射线与任何碰撞体碰撞时为真 否则为假 参数2为如果为真的话 就把这个碰撞点的信息给hit

if (Physics.Raycast(ray,out hit)) {

// 获取碰撞点

if (hit.collider.name == "Plane") {

isMove = true;

_moveTarget = hit.point;

_moveTarget = new Vector3(_moveTarget.x, _player.transform.position.y, _moveTarget.z);

}

}

}

if (isMove) {

// Lerp 两个向量之间的线性插值 参数1form 参数2to 参数3 速度

_player.transform.position = Vector3.Lerp(_player.transform.position,_moveTarget,Time.deltaTime*_speed);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容