摄像机旋转约束问题及解决

 

去年2月份写过一个旋转约束的解决方法,不过是硬算的,今天无意中在论坛发现了一个解决方法

if (euler.x > 180) euler.x -= 360;
if (euler.x < -180) euler.x += 360;

这样就可以保证旋转区间可比较

 

具体代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestCamera : MonoBehaviour
{
    public Transform target;
    public Vector2 xLimit;
    public Vector2 yLimit;
    public Vector2 zLimit;


    void LateUpdate()
    {
        transform.LookAt(target);

        var euler = FixEuler(transform.eulerAngles);

        euler.x = Mathf.Clamp(euler.x, xLimit.x, xLimit.y);
        euler.y = Mathf.Clamp(euler.y, yLimit.x, yLimit.y);
        euler.z = Mathf.Clamp(euler.z, zLimit.x, zLimit.y);

        transform.eulerAngles = euler;
    }

    Vector3 FixEuler(Vector3 euler)
    {
        if (euler.x > 180) euler.x -= 360;
        if (euler.x < -180) euler.x += 360;

        if (euler.y > 180) euler.y -= 360;
        if (euler.y < -180) euler.y += 360;

        if (euler.z > 180) euler.z -= 360;
        if (euler.z < -180) euler.z += 360;

        return euler;
    }
}
View Code

 

转载于:https://www.cnblogs.com/hont/p/6657941.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值