【问题标题】:Need an object to rotate from current position to new position需要一个对象从当前位置旋转到新位置
【发布时间】:2019-07-10 10:14:10
【问题描述】:

我希望 GameObject 在调用该事件触发器时从其当前位置旋转到 0,0,0。

我已经更新了我的代码,这确实有效并且可以满足我的要求,但是是否可以添加一个“速度”变量来控制它在 Quaternion.identity 之后旋转回 0,0,0 的速度?

非常感谢

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

public class rotate : MonoBehaviour
{

public GameObject spinme;
public float speed;

public void spin()

{
        spinme.transform.rotation = Quaternion.identity;
}

}

【问题讨论】:

  • 那么你想让它面向默认方向,还是让它移动到0,0,0?
  • 旋转到 0,0,0
  • 您想要旋转还是仅仅捕捉到 0,0,0?
  • rotate 就是这样做的,它旋转它看起来不像你阅读统一文档太多..因为“旋转”包含当前的旋转量..也许你可以从那个开始
  • currentposition(0,0,0) 没有意义..也是..你是在谈论轮换还是位置..这是两个不同的东西,你如何使用这些名字毫无意义..

标签: c# unity3d rotation


【解决方案1】:

您可以将四元数逐渐应用于对象(按您想要的步数),以便它根据速度或时间而变化。

这称为插值。对于四元数,插值公式称为 SLERP:

https://en.m.wikipedia.org/wiki/Slerp

研究它在 unity3d 中的工作原理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-15
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    相关资源
    最近更新 更多