行者己度 2019-03-04 11:41
浏览 418

transform固定轴旋转问题

是这样的,我想实现根据按键(wasd),使方块根据对应的轴缓慢旋转90度(xy)。

但是在实现过程中,发现旋转总是会发生奇怪的错误,貌似这个问题是因为万向锁造成的,但是我不清楚该如何解决.

以下是问题代码,不知道该如何修改:

void Update()
{

    //获取按键方向
    if (Input.GetKeyDown(KeyCode.D))
        direction = Direction.Right;
    else if (Input.GetKeyDown(KeyCode.A))
        direction = Direction.Left;
    else if (Input.GetKeyDown(KeyCode.W))
        direction = Direction.Up;
    else if (Input.GetKeyDown(KeyCode.S))
        direction = Direction.Down;

    //更新目标旋转角度
    if (Input.anyKeyDown)
    {
        if (direction == Direction.Up)
            rotate = Quaternion.Euler(rotate.eulerAngles.x + -90, rotate.eulerAngles.y, rotate.eulerAngles.z);
        else if (direction == Direction.Down)
            rotate = Quaternion.Euler(rotate.eulerAngles.x + 90, rotate.eulerAngles.y, rotate.eulerAngles.z);
        else if (direction == Direction.Left)
            rotate = Quaternion.Euler(rotate.eulerAngles.x, rotate.eulerAngles.y + -90, rotate.eulerAngles.z);
        else if (direction == Direction.Right)
            rotate = Quaternion.Euler(rotate.eulerAngles.x, rotate.eulerAngles.y + 90, rotate.eulerAngles.z);
    }

    //实时刷新旋转角度
    transform.rotation = Quaternion.RotateTowards(transform.rotation, rotate, 2f);
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
    • ¥30 STM32 INMP441无法读取数据
    • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
    • ¥15 用visualstudio2022创建vue项目后无法启动
    • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
    • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
    • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
    • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
    • ¥30 c#打开word开启修订并实时显示批注
    • ¥15 如何解决ldsc的这条报错/index error