unity3D中使角色朝着鼠标的方向

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3D中使角色朝着鼠标的方向相关的知识,希望对你有一定的参考价值。

    思路:首先要获得鼠标的世界坐标(鼠标的位置坐标默认的是屏幕坐标),当鼠标点击时,角色朝着鼠标的方向移动;

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轴坐标保持不变就可以了。

以上是关于unity3D中使角色朝着鼠标的方向的主要内容,如果未能解决你的问题,请参考以下文章

如何让角色转向相机的方向? [Unity3D]

unity3d 鼠标延各个方向拖拽物体

基于鼠标的瞄准 Unity3d

Unity笔记将角色的碰撞体朝向鼠标点击方向——角色朝向鼠标

unity3D:游戏分解之角色移动和相机跟随

从Unity3d 导出成exe后 出现问题