您的当前位置:首页正文

Unity3D实现鼠标控制视角转动

2024-08-08 来源:独旅网
Unity3D实现⿏标控制视⾓转动

前⾯,学了物体的移动功能,现在来学⼀下C#实现⿏标控制摄像机(视⾓)移动。代码如下:

C#脚本(在Unity 5.5.1 下能运⾏):

using System.Collections;

using System.Collections.Generic;using UnityEngine;

public class MouseView : MonoBehaviour { public enum RotationAxes {

MouseXAndY = 0, MouseX = 1, MouseY = 2 }

public RotationAxes m_axes = RotationAxes.MouseXAndY; public float m_sensitivityX = 10f; public float m_sensitivityY = 10f;

// ⽔平⽅向的 镜头转向

public float m_minimumX = -360f; public float m_maximumX = 360f;

// 垂直⽅向的 镜头转向 (这⾥给个限度 最⼤仰⾓为45°) public float m_minimumY = -45f; public float m_maximumY = 45f; float m_rotationY = 0f;

// Use this for initialization void Start () {

// 防⽌ 刚体影响 镜头旋转

if (GetComponent()) {

GetComponent ().freezeRotation = true; } }

// Update is called once per frame void Update () {

if (m_axes == RotationAxes.MouseXAndY) {

float m_rotationX = transform.localEulerAngles.y + Input.GetAxis (\"Mouse X\") * m_sensitivityX; m_rotationY += Input.GetAxis (\"Mouse Y\") * m_sensitivityY;

m_rotationY = Mathf.Clamp (m_rotationY, m_minimumY, m_maximumY); transform.localEulerAngles = new Vector3 (-m_rotationY, m_rotationX, 0); } else if (m_axes == RotationAxes.MouseX) {

transform.Rotate (0, Input.GetAxis (\"Mouse X\") * m_sensitivityX, 0); } else {

m_rotationY += Input.GetAxis (\"Mouse Y\") * m_sensitivityY;

m_rotationY = Mathf.Clamp (m_rotationY, m_minimumY, m_maximumY);

transform.localEulerAngles = new Vector3 (-m_rotationY, transform.localEulerAngles.y, 0); } }}

调⽤时,只需把该脚本绑定给物体即可。这⾥是绑定摄像机,以摄像机为第⼀⼈称视⾓转动。以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

因篇幅问题不能全部显示,请点此查看更多更全内容