方块90度旋转的一种另类解决方法

最近想实现一个方块可以根据按键朝任意方向旋转90度的功能,却意外的发现会发生万向锁的问题,导致无法正常进行旋转.

而当我采用四元数的时候,采用的是用欧拉角进行设置,此时又是发现在进行X轴旋转的时候,有时候会发生意外的反向旋转问题.

想了很久,不知道该怎么解决,最后用了一个另类的方法给解决了.

 

    public Transform target;

    void Update()
    {
        //根据按键旋转预演对象
        if (Input.GetKeyDown(KeyCode.W))
            target.Rotate(Vector3.left * 90, Space.World);
        else if (Input.GetKeyDown(KeyCode.S))
            target.Rotate(Vector3.right * 90, Space.World);
        else if (Input.GetKeyDown(KeyCode.A))
            target.Rotate(Vector3.down * 90, Space.World);
        else if (Input.GetKeyDown(KeyCode.D))
            target.Rotate(Vector3.up * 90, Space.World);

        //朝预演对象的旋转位置进行旋转
        transform.rotation = Quaternion.RotateTowards(transform.rotation, target.rotation, 4f);

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值