2016-08-15 14 views
0

GameObjectを持っていて、私のPlayerに続いて、常に彼の左にとどまります。 私は自然に見えないし、NavmeshAgentでも遊んでいたので、私はそれを子供にしたくなかったが、第2のオブジェクトは遅すぎる/あまり動かない。1つのGameObjectをSquad Memberにする

ありがとうございました!

+0

'NavmeshAgent'は一般的に良い解決策です。 'speed'、' angularSpeed'、 'acceleration'を微調整しようとしましたか? –

+0

はい、私はそれと一緒に遊んで、それは通常遅すぎるか、オブジェクトが急速に加速され、それが振り落とされ、振り子のように振る舞います。たぶん私はこれら3つの値が一緒に振る舞う方法を得ることはありません。 – kapuetze

答えて

0

一つの解決策はこれです:

  1. はそのメインプレイヤオブジェクトの子として(私はSquadPointそれを呼び出す)、空のゲームオブジェクトを追加して、(彼の左への)目的の位置に配置します。直接シーンで

  2. 場所、あなたの実際のチームのメンバーは

  3. (私はチームのメンバーを想定して、私はSquadMemberControllerそれを呼び出すそれに接続されているコントローラスクリプトを持っている)SquadMemberControllerスクリプト

に次のコードを追加します

これは、チームメンバーをSquadPointに従わせるべきであり、SquadPointはメインプレイヤーの子であるため、メインプレイヤーと共に移動して回転する。

const float threshold = 1f; 

public float speed;   //set in inspector 
public Transform SquadPoint; //set in inspector 

void FixedUpdate(){ 

    //move towards SquadPoint with given speed 
    var distance = SquadPoint.position - transform.position; 
    if(distance.magnitude > threshold) 
    { 
     var direction = distance.normalized; 
     transform.position += direction * speed * time.fixedDeltaTime; 

     //rotate immediately 
     transform.LookAt(SquadPoint.position); 
    } 
    else 
    { 
     //... very close to main player 
    } 
} 
+0

私はそれを私のものに適合させるために少し回転を微調整しましたが、その良い味わいです。どうもありがとうございました! – kapuetze

関連する問題