unity镜头旋转与角色转向(二)
  gBNXT4vbpRIG 2023年11月02日 43 0

接上一篇““角色人物需要进行转动方向”的功能实现。”

在游戏中总会遇到人物角色通过键盘WASD这几个键进行转动方向的功能以及通过鼠标进行镜头旋转观察角色的功能。

需求一:角色人物需要进行转动方向。

需求二:通过鼠标进行镜头旋转观察角色。

本章节先讲“通过鼠标进行镜头旋转观察角色”的功能实现。

场景当中有一个cube,这个就是用来观察的点。如图:

unity镜头旋转与角色转向(二)_右键

代码的思路是:相机去看这个cube。cube在角色模型的前方,所以从后方看就会看到角色模型,而实际看到的物体是cube。

只需要将cube的meshrender关闭就无法看到它了,但实际cube又是存在的一个gameobject。

unity镜头旋转与角色转向(二)_右键_02

所以在代码中名为:headpoint。

 Thirdcamera.LookAt(headpoint.transform);这句就是相机看向cube物体。


实现的功能就是,当按下鼠标右键时,拖动鼠标可以看到相机绕这这个cube进行旋转。

该方法放在update里实时调用。

代码中的方法如下:

 #region//相机旋转
        if (Input.GetMouseButton(1))
        {
          

            mouse_y += Input.GetAxis("Mouse X") * 1f * rotSpeed;
            mouse_x -= Input.GetAxis("Mouse Y") * 1f * rotSpeed;
            mouse_x = Mathf.Clamp(mouse_x, -89, 89);
            mouse_x = ClampAngle(mouse_x);
            mouse_y = ClampAngle(mouse_y);

            mouse_newrotation = Quaternion.Euler(mouse_x, mouse_y, 0);

            Thirdcamera.rotation = mouse_newrotation;//相机角度等于鼠标最终 角度

            Vector3 direction = mouse_newrotation * Vector3.forward;

            Thirdcamera.position = headpoint.transform.position - direction * followdistance;

            Thirdcamera.LookAt(headpoint.transform);

#endregion
           

    static float ClampAngle(float angle)
    {
        if (angle < -180)
            angle += 360;
        if (angle > 180)
            angle -= 360;
        return angle;
    }

代码中的rotSpeed变量是旋转速度。

 mouse_x = Mathf.Clamp(mouse_x, -89, 89);是对鼠标的视角进行了限定。

因为鼠标在屏幕滑动只能是X  Y两个轴,所以只需要对X Y进行处理就可以了。

 mouse_newrotation = Quaternion.Euler(mouse_x, mouse_y, 0);

Thirdcamera.rotation = mouse_newrotation;//相机角度等于鼠标最终 角度

然后为了让相机的方向永远看向鼠标指向的前方,所以把direction加上方向。

 Vector3 direction = mouse_newrotation * Vector3.forward;

下面一句是为了让相机与cube之间产生距离,距离就是跟随物体的距离:followdistance。

Thirdcamera.position = headpoint.transform.position - direction * followdistance;



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

gBNXT4vbpRIG