Unity功能——物体随鼠标朝左/右旋转(带角度限制)

26 篇文章 5 订阅
25 篇文章 1 订阅
功能简介:

unity的3d场景中,设置3d物体和2dUI,随鼠标移动,向左/右旋转,带角度限制;

1、获取鼠标位置

float mouseX  = Input.GetAxisRaw("Mouse X")

float mouseX = Input.GetAxisRaw("Mouse X");
2、设置物体的左右朝向

transform.Rotate(- Vector3.forward * mouseX  * rotateSpeed);

transform.Rotate(Vector3.forward * mouseY  * rotateSpeed);

transform.Rotate(-Vector3.forward * mouseX  * rotateSpeed);

transform.Rotate(Vector3.forward * mouseY  * rotateSpeed);
3、限制物体角度
(1)3d场景中,限制Y

float angleY = transform.eulerAngles.y;

if (angleY <= 35) angleY = 35;

transform.eulerAngles = new Vector3(transform.eulerAngles.x,angleY, transform.eulerAngles.z);

(2)UI场景中,限制Z

float angleZ = transform.eulerAngles.z;

if (angleZ >= 150) angleZ  = 150;

transform.eulerAngles = new Vector3(transform.eulerAngles.x,transform.eulerAngles.y,angleZ);

//示例,限制X方向

float angleX = transform.eulerAngles.x;

if (angleX <= 45) angleX = 45;

transform.eulerAngles = new Vector3(angleX,transform.eulerAngles.y,transform.eulerAngles.z);
 4、完整功能代码

脚本直接挂到目标对象身上即可。

这里直接把设置物体和设置UI的代码放同个脚本中,根据需要进行保留删除。

public float rotateSpeed =10f;

public void Update(){
    RotateItem();
}

/// <summary>
/// 旋转物体
/// </summary>
private void RotateItem()
{
    float mouseY = Input.GetAxisRaw("Mouse Y");
    float mouseX  = Input.GetAxisRaw("Mouse X");
    transform.Rotate(-Vector3.forward * mouseX   * rotateSpeed);
    transform.Rotate(Vector3.forward * mouseY * rotateSpeed);

    LimitAngle();
    LimitImgAngle();
}

/// <summary>
/// 限制场景中物体的Y角度
/// </summary>
private void LimitAngle()
{
    float angleY = transform.eulerAngles.y;

    if (angleY <= 15) angleY = 15;
    else if (angleY >= 165) angleY = 165;

    transform.eulerAngles = new Vector3(transform.eulerAngles.x,angleY,transform.eulerAngles.z);
}

/// <summary>
/// 限制画布中UI的Z角度
/// </summary>
private void LimitImgAngle()
{
    float angleZ = transform.eulerAngles.z;
    if (angleZ <= 30) angleZ = 30;
    else if (angleZ >= 150) angleZ = 150;
    transform.eulerAngles = new Vector3(transform.eulerAngles.x,transform.eulerAngles.y,angleZ);
}

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值