在第三人称游戏中,鼠标点击屏幕,角色移动到指定地点是一个重要的功能。
这一般是通过射线检测来实现
原理是:首先从屏幕上的主摄像机发送一条射线,击中地面后,把角色移动到相应的位置
代码实现如下:
bool GetInteraction()
{
Ray interactionRay = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit interactionInfo;
if(Physics.Raycast(interactionRay, out interactionInfo, Mathf.Infinity))
{
GameObject interactedObject = interactionInfo.collider.gameObject;
if (!walkBackward || swordWalking > 0 )
{
gameObject.transform.LookAt(interactionInfo.point); // 移动
}
else
{
gameObject.transform.rotation = Quaternion.LookRotation(gameObject.transform.position - interactionInfo.point); // 旋转
}
return true;
}
touchPosition = null;
return false;
}