思路:首先要获得鼠标的世界坐标(鼠标的位置坐标默认的是屏幕坐标),当鼠标点击时,角色朝着鼠标的方向移动;
input.mousePosition获得的是鼠标的屏幕坐标;
Vector3 world;
public float speed;
void Update()
{
if(Input.GetMouseButtonDown(0))
{
Vector3 m_pos=Input.mousePosition;
Vector3 player_pos=Camera.main.WorldToScreenPoint(transform.position);
m_pos.z=player_pos.z;
world=Camera.main.ScreenToWorldPoint(m_pos);
speed=8.0f;
transform.LookAt(world);
transform.translate(Vector3.forward*speed*Time.deltaTime);
}
}
注:以上方法只适用于垂直平面,即摄像头垂直于x—z面,一般游戏是不会垂直的,平面不是垂直的,角色就会出现穿透地面的现象,所以需要改一下代码;
把world=Camera.main.ScreenToWorldPoint(m_pos);换成下面的就可以了;
world.x=Camera.main.ScreenToWorldPoint(m_pos).x;
world.z=Camera.main.ScreenToWorldPoint(m_pos).z;
world.y=transform.position.y;
也就是说角色的y轴坐标保持不变就可以了。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。