2017-02-07 4 views
1

私はLookAt()関数を使用してキューブの周りを回転させ、Androidデバイスの加速度計を使用しようとしています。それはうまくいく。しかし、回転をY軸のある値で停止させたい。ここに私のコードは、これまでのところです:加速度計付きユニティ回転カメラ

public Transform target; // The object to follow 
public float topMargin = 0.2f; // Top rotation margin 

// The position of the target 
private Vector3 point; 

void Start() { 
    point = target.transform.position; 
    transform.LookAt (point); 
} 

void Update() { 
    // Freeze 
    if (transform.rotation.y >= topMargin) { 
     transform.RotateAround (point, new Vector3 (0, 1, 0), 0); 
    } 
    // Freeze 
    else if (transform.rotation.y <= -topMargin) { 
     transform.RotateAround (point, new Vector3 (0, 1, 0), 0); 
    } else { 
     transform.RotateAround (point, new Vector3(0, 1, 0), Input.acceleration.x); 
    } 
} 

問題は、カメラが上マージンに達したとき、私は反対方向に再び回転し始めることができないということです。私はフラグ変数を試してきましたが、正しいプログラムロジックを得ることができません(別のif/elseを試しました)。これを実現する方法に関する提案はありますか?

答えて

0

(意図された)回転方向を確認できます。結果がより適切な回転につながる場合(境界から離れて許容領域に向かう)、意図した回転を適用することを許可することができます。 私は、加速度計の値を使って、 "意図された方向"を確認するのが最も簡単でエラーが起こりにくいと思います。 (回転自体をチェックするのではなく)

関連する問題