射線

public GameObject _player;

bool isMove = false;

Vector3 _moveTarget;

public float _speed = 1f;

void Update () {

if (Input.GetMouseButtonDown(0)) {

// 從攝像機發(fā)射一條經(jīng)過鼠標(biāo)當(dāng)前位置的射線 用射線接收

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

// 結(jié)構(gòu)體 獲取射線返回的信息

RaycastHit hit;

// Physics.Raycast 在場景中投下可以與所有碰撞器碰撞的一條光線 參數(shù)1 有方向有起點的射線

// bool值接收 當(dāng)射線與任何碰撞體碰撞時為真 否則為假 參數(shù)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 兩個向量之間的線性插值 參數(shù)1form 參數(shù)2to 參數(shù)3 速度

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

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容