2016-07-21 8 views
2

私が開始回転を使用しているgameObjectのインスペクタでは、 "-90"が使用されますが、print(transform.eulerAngles.x)を実行すると、270(transform.localEulerAngles.xの場合)になります。Unity3d - インスペクタの内容とまったく異なる

gameObjectを下に傾けると、インスペクタのX値が大きくなる(たとえば-85)。

私はそれが必要としてgameObject上向きの検査官がx座標、(-95に、EXを)小さくなる傾けた場合は、しかし:印刷transform.eulerAngles.xも大きくなっは、物事が奇妙な取得する場所だ274ここ

に言います印刷されたeulerAngle.xの値は大きくなります(ここでは274になります)。だから、eulerAngle.xが270であるオブジェクトを上下に回転させると、xの値は関係なく増加します。

私は間違いなくここで何かしていますが、多くのトラブルシューティングの後、私はまだ何が分かりません。何かご意見は?

+0

は、他のゲームオブジェクトの子ゲームオブジェクトですか? – Programmer

+0

いいえ、そうではありません。 :/ – papathor

+0

それは統一文書で何度も何度も説明されています。 **簡単に「回転」**を使用してください。それは簡単です。 – Fattie

答えて

2

eulerAnglesはUnity3Dの複雑なプロセスです。インスペクタやコードで値を増減したり、設定したりしないでください。絶対値のみを使用して読み込みと設定を行う必要があります。

角度が360度を超えると失敗するため、値を増減しないでください。代わりにTransform.Rotateを使用します。

using UnityEngine; 
using System.Collections; 

public class ExampleClass : MonoBehaviour { 
    public float yRotation = 5.0F; 
    void Update() { 
     yRotation += Input.GetAxis("Horizontal"); 
     transform.eulerAngles = new Vector3(10, yRotation, 0); 
    } 
    void Example() { 
     print(transform.eulerAngles.x); 
     print(transform.eulerAngles.y); 
     print(transform.eulerAngles.z); 
    } 
} 

これはドキュメントから直接取得される: https://docs.unity3d.com/ScriptReference/Transform-eulerAngles.html

またTransform.Rotateドキュメント: https://docs.unity3d.com/ScriptReference/Transform.Rotate.html

インスペクタここ

はUnity3Dドキュメント例のサンプルコードでありますあなたがそれを記録するとき、ほぼ常にあなたにファンキーな価値を与えます。唯一の一貫性はprint(transform.rotation)です。これにより、インスペクタとコード全体で同様の値が保持されます。 transform.eulerAnglesまたはtransform.localEulerAnglesの各値について

+0

私はドキュメントを読んでいます。値を増やしたり減らしたりするのではなく、値を読み込むだけです。編集:また、印刷(transform.rotation)についての部分は真ではありません。変換は四元数であるため、印刷すると、eulerAnglesではなく、x、y、z、wの四元値が得られます。 – papathor

+0

ロギングtransform.rotation.eulerAngles.xを試してください。出力を見るには興味があります。 – ApolloSoftware

+0

出力はtransform.rotation.eulerAngles.xとtransform.eulerAngles.xと同じですが、localEulerAngles.xの場合は同じ – papathor

0

それが親を持っている場合: -

if (value > 270) 
    value =- 360; 
関連する問題