GameObjectを持っていて、私のPlayerに続いて、常に彼の左にとどまります。 私は自然に見えないし、NavmeshAgentでも遊んでいたので、私はそれを子供にしたくなかったが、第2のオブジェクトは遅すぎる/あまり動かない。1つのGameObjectをSquad Memberにする
ありがとうございました!
GameObjectを持っていて、私のPlayerに続いて、常に彼の左にとどまります。 私は自然に見えないし、NavmeshAgentでも遊んでいたので、私はそれを子供にしたくなかったが、第2のオブジェクトは遅すぎる/あまり動かない。1つのGameObjectをSquad Memberにする
ありがとうございました!
一つの解決策はこれです:
はそのメインプレイヤオブジェクトの子として(私はSquadPoint
それを呼び出す)、空のゲームオブジェクトを追加して、(彼の左への)目的の位置に配置します。直接シーンで
場所、あなたの実際のチームのメンバーは
(私はチームのメンバーを想定して、私は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
}
}
私はそれを私のものに適合させるために少し回転を微調整しましたが、その良い味わいです。どうもありがとうございました! – kapuetze
'NavmeshAgent'は一般的に良い解決策です。 'speed'、' angularSpeed'、 'acceleration'を微調整しようとしましたか? –
はい、私はそれと一緒に遊んで、それは通常遅すぎるか、オブジェクトが急速に加速され、それが振り落とされ、振り子のように振る舞います。たぶん私はこれら3つの値が一緒に振る舞う方法を得ることはありません。 – kapuetze