40岁开始学习unity 2023-01-18 19:48 采纳率: 61.5%
浏览 15
已结题

Unity 2D 模式下旋转物体后,下落方向自动改变

有一个图片拼接的起来的预制件(可以想象为就是俄罗斯方块的那些物体)

每隔1秒下落,采用transform.Translate(0,-1,0) 进行自动下落,按左或按右就是左移或右移一格,然后还是会按每隔1秒下落,这些都正常。

但是按了旋转按键后,比如转90度,就是采用transform.Rotate(0,0,90)进行旋转,但是旋转之后,物体就不往下掉了,而是沿X轴在移动,且用print输出坐标也可以看出沿X轴再移动,但是Tanslate明明是沿Y轴下落,怀疑是沿Z轴转90度后,Y轴变X轴了,所以沿X轴动了,这要怎么解决呢?

  • 写回答

1条回答 默认 最新

  • m0_54204465 2023-01-18 21:00
    关注

    在 Unity 中,旋转一个物体会改变其坐标系,导致旋转后的物体在进行 Translate 操作时的行为发生变化。

    为了解决这个问题,可以使用 Transform.TransformDirection() 方法将世界坐标系中的移动向量转换为物体局部坐标系中的移动向量。这样,即使物体旋转了,Translate 仍然会沿着物体局部坐标系中的 Y 轴进行移动。

    具体代码如下:

    Vector3 moveDirection = new Vector3(0, -1, 0);
    transform.Translate(transform.TransformDirection(moveDirection));
    
    

    另外,也可以考虑在旋转物体后,再将物体的旋转角度归0,这样保证物体的坐标轴始终是正的。

    transform.rotation = Quaternion.identity;
    
    

    这样就能保证物体旋转后还是沿着Y轴移动.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月27日
  • 已采纳回答 1月19日
  • 创建了问题 1月18日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭