C# 如何向对象Z旋转添加特定数量?
基本上,我想做一件事,我有一辆车,当我在一个特定的区域,车轮转动,我可以飞。它工作得很好,但是我的车前部很重,一升到空中,我就开始向前旋转,所以我试着给车的Z旋转增加一个数字,在这个例子中是前升。我尝试过其他人的解决方案,但没有一个奏效。有了这个,我得到了一个错误,即“运算符“+”不能应用于“四元数”和“向量3”类型的操作数C# 如何向对象Z旋转添加特定数量?,c#,unity3d,C#,Unity3d,基本上,我想做一件事,我有一辆车,当我在一个特定的区域,车轮转动,我可以飞。它工作得很好,但是我的车前部很重,一升到空中,我就开始向前旋转,所以我试着给车的Z旋转增加一个数字,在这个例子中是前升。我尝试过其他人的解决方案,但没有一个奏效。有了这个,我得到了一个错误,即“运算符“+”不能应用于“四元数”和“向量3”类型的操作数 使用UnityEngine; 公务舱飞行:单一行为 { 公共内部车轮角度=90; 公众浮标最大高度; 公共浮动火箭动力; 公共交通工具; 公共刚体; 公共浮式前升降机; 无
使用UnityEngine;
公务舱飞行:单一行为
{
公共内部车轮角度=90;
公众浮标最大高度;
公共浮动火箭动力;
公共交通工具;
公共刚体;
公共浮式前升降机;
无效更新()
{
float xPos=transform.position.x;
float yPos=transform.position.y;
如果(xPos>-16&&xPos<15){
foreach(在轮子中变换轮子){
wheel.rotation=四元数Euler(90,0,0);
}
if(Input.GetKey(“空格”)和&yPos
我对unity和c非常陌生,所以这对我来说非常陌生,我不知道从哪里开始。错误只是说你在添加四元数和向量3。 Unity在内部将旋转存储为四元数。所以下面的代码
transform.localRotation = transform.localRotation + new Vector3(0, 0, frontLift);
应该是
transform.localRotation = Quaternion.Euler(0, 0, frontLift);
transform.localRotation = transform.localRotation * Quaternion.Euler(0, 0, frontLift);
来源:您可以通过添加两个旋转 然后,为了获得所使用的Euler轴的
四元数
旋转,它应该是
transform.localRotation = transform.localRotation * Quaternion.Euler(0, 0, frontLift);
或者简言之
transform.localRotation *= Quaternion.Euler(0, 0, frontLift);
或者您可以使用,以便围绕某个轴旋转,例如
transform.rotation *= Quaternion.AngleAxis(frontLift, transform.forward);
但是 我可以看到你有一个
刚体。一旦涉及到刚体
,您就不应该通过变换
组件获取或设置任何内容,而应该仅通过刚体
组件
在这里你可以使用
但是,您需要在FixedUpdate
中执行此操作。如何使它在按键时不断添加此项?我试着将其放入一段时间(Input.GetKey(“space”)循环中,但所做的只是使unity崩溃,即使frontLift的值非常低
rb.MoveRotation(rb.rotation * Quaternion.AngleAxis(frontLift, rb.rotation * Vector3.forward));