2016-11-29 14 views
0

私は45度のカメラアングルでトップダウンシューティングをしています。私のシーンでは、カメラをプレイヤーに追いかけるようにプレイヤーに子供を配らせました。私は"Secret Ponchos"のようないくつかのゲームで見ましたが、カメラはプレーヤーが目指している方向に少し浮いています。それは微妙だが、磨きをかける。Unity 3D C#カメラ - カメラをマウスまたはジョイスティックの方向に軽く動かす/

私はいくつかの方法を試しましたが、Lerpのベクターを取得する方法はわかりません。 mouseMovementに基づいてナッジを行う方法はありますか?もしそうなら、どのように?

+1

ようこそstackoverflow。私はあなたがここで質問をする最善の方法をチェックすべきだと思います。あなたと誰もがここでもっと簡単になるでしょう。あなたのお手伝いをして、詳細を提供する必要があります。例:カメラスクリプト。 –

+0

ごめんなさい。これはcameraScriptが行うすべてのことで、今はカメラスクリプトがありません。私は、右のベクトルを見つけ出すのには数行しかかからないと思いますか? – rajul614

+0

ステルス・ユニティ・プロジェクトからカメラ・スクリプトを試すことができます。私は前にそれらを使用し、私はそれがあなたが望むように彼らが動作すると思います。見てみましょう。 http://answers.unity3d.com/questions/691973/stealth-project-tutorial-camera-movement.html –

答えて

1

カメラコントロールのLerpで使用する位置を取得するには、カメラの移動方向を把握して、プレーヤーの位置に追加するだけです。

1つの選択肢は、transform.forwardを使用して、プレイヤーが向いている方向を使用することですが、これにはプレイヤーキャラクターを回転させる必要があります。

//Assign the player's transform here 
public Transform Target; 

Vector3 GetNudgeDirection() { 
    return Target.forward; 
} 

もう1つの方法は、プレイヤーに対してマウスの方向を取得することです。

public Transform Target; 

Vector3 GetNudgeDirection() { 
    //Get the position of the mouse 
    Vector3 mousePos = Input.mousePosition; 
    mousePos.z = -Camera.main.transform.position.z; 
    Vector2 inputPos = Camera.main.ScreenToWorldPoint(mousePos); 
    //returns direction from the player to the mouse pos. 
    return (inputPos - (Vector2)Target.position).normalized; 
} 

次に、ターゲットの位置にナッジの方向を追加して、カメラの目標位置を取得します。

//This field determines how far to nudge 
private float nudgeDistance = 2f; 

Vector3 GetTargetPosition() { 
    return Target.position + (GetNudgeDirection() * nudgeDistance); 
} 

ターゲットの位置は、カメラを移動する場所ではなく、見た目の場所です。したがって、カメラを実際に動かしているときは、目標位置にオフセットを加えて距離を維持してください。