unity 角度限制_Unity3D实现摄像机镜头移动并限制角度

本文详细介绍了在Unity3D中如何实现摄像机镜头跟随鼠标移动,并限制镜头上下左右移动的角度。通过`ViewFromCream`类,使用`Update()`和`CreamView()`方法结合`Input.GetAxis()`来获取鼠标输入,然后通过`LimitAngle()`和`LimitAngleUandD()`函数限制相机在60度范围内的转动。同时,文章还解释了`IsPosNum()`方法的作用,该方法用于将欧拉角转换到-180°至180°之间,简化角度判断的复杂性。
摘要由CSDN通过智能技术生成

本文实例为大家分享了Unity3D实现摄像机镜头移动并限制角度的具体代码,供大家参考,具体内容如下

摄像机镜头跟随鼠标移动,并限制上下左右的移动角度

public class ViewFromCream : MonoBehaviour

{

public int speed=5;

public Vector3 vect;

private float xcream;

private float ycream;

public void Update()

{

CreamView();

}

private void CreamView()

{

float x = Input.GetAxis("Mouse X");

float y = Input.GetAxis("Mouse Y");

if (x!=0||y!=0)

{

LimitAngle(60);

LimitAngleUandD(60);

this.transform.Rotate(-y * speed, 0, 0);

this.transform.Rotate(0, x * speed, 0, Space.World);

}

}

///

/// 限制相机左右视角的角度

///

/// 角度

private void LimitAngle(float angle)

{

vect = this.transform.eulerAngles;

//当前相机x轴旋转的角度(0~360)

xcream = IsPosNum(vect.x);

if (xcream > angle)

this.transform.rotation = Quaternion.Euler(angle,vect.y,0);

else if (xcream < -angle)

this.transform.rotation = Quaternion.Euler(-angle, vect.y, 0);

}

///

/// 限制相机上下视角的角度

///

///

private void LimitAngleUandD(float angle)

{

vect = this.transform.eulerAngles;

//当前相机y轴旋转的角度(0~360)

ycream = IsPosNum(vect.y);

if (ycream > angle)

this.transform.rotation = Quaternion.Euler(vect.x, angle, 0);

else if (ycream < -angle)

this.transform.rotation = Quaternion.Euler(vect.x, -angle, 0);

}

///

/// 将角度转换为-180~180的角度

///

///

///

private float IsPosNum(float x)

{

x -= 180;

if (x < 0)

return x + 180;

else return x - 180;

}

}

对IsPosNum方法进行说明

之所以要将获取的欧拉角转换为-180°-180°之间,是因为在获取eulerAngle中,x轴和y轴的值只有0-360,而没有负数,那么这将会复杂化我们角度的判断,如限制左右角度为-60-60之间,那么我们就要判断角度是否超过300度或是超过60度, 显然超过300度的角度必定超过60度,那么就需要另外加条件进行判断;因此对获取的值进行转化更为方便!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值