如何使用滑块统一旋转关节
Posted
技术标签:
【中文标题】如何使用滑块统一旋转关节【英文标题】:how to use slider to rotate the joint in unity 【发布时间】:2022-01-20 04:54:59 【问题描述】:我使用滑块来改变关节角度,这是我的代码。
void Update()
a = sliderx.GetComponent<slider>().value;
b = slidery.GetComponent<slider>().value;
headjoint.transform.Rotate(a, b, 0);
在我滑动杆后,关节会旋转并且不会停止。喜欢
a += 值
而不是
a = 值
,滑块没有给出确定的数字?
为什么?我需要使用 eularangle 吗?
当我使用时
headjoint.transform.rotation = Quaternion.Euler(a, b, 0);
它在运行时将我的对象的旋转角度更改为 0,0,0
有什么想法吗?
【问题讨论】:
"并且在我滑动杆后,关节会旋转并且不会停止" ->Update()
中有 headjoint.transform.Rotate(a, b, 0);
吗?请显示您正在处理旋转的整个单一行为 sn-p
嗨,我已将其放入 update() @rustyBucketBay
我不是说你应该把它放在那里,我在问,因为如果它在更新中,你的旋转不停止是正常的。如果您需要准确的帮助,请提供整个 sn-p。无法评估代码的备用部分不知道它们在哪里被调用的问题
【参考方案1】:
Rotate
顾名思义,将对象旋转给定的量。如果你不断地用相同的值调用它,你的对象就会不断地旋转大约相同的量。
您宁愿设置轮播。
你的尝试
headjoint.transform.rotation = Quaternion.Euler(sliderX.value, sliderY.value, 0);
实际上很接近,是的。 但是默认Rotate
应用于本地空间。所以如果你想要同样的行为,你宁愿使用
// First of all use the correct type and don't use GetComponent repeatedly
public Slider sliderX;
public Slider sliderY;
void Update()
headjoint.transform.localRotation = Quaternion.Euler(sliderX.value, sliderY.value, 0);
【讨论】:
以上是关于如何使用滑块统一旋转关节的主要内容,如果未能解决你的问题,请参考以下文章