コードの主な問題。コインをプレイヤーに近づける方法については、手順のロジックを再作成する必要があります。
最初に大きな問題はこれです。
void FixedUpdate()
したがって、1フレームあたりの時間が固定されます。 Vector3 direction = attractedTo.transform.position - transform.position;
あなたのゲームオブジェクトでgameObject.GetComponent<Rigidbody>().AddForce (strengthOfAttraction * direction);
独自のコンポーネントを見つけることを試みるので、フレームが再計算されますし、新しいポインタ名direction
を作成する:あなたは、変数のVector3を宣言し しようとしています。次にAddforceを呼び出します。 AddForce。そしてあなたは時間を使っていませんでした。
Addforce入力した方向に応じて剛体を押し込みます。それで、それはまっすぐに行くでしょう。そしてあなたはこれを毎秒固定フレーム量で行います。
最初に手順を修正してください。私の推薦はこれです。
スムーズフォロースクリプトを使用してください。 Unity3Dがあなたのリファレンスを取得しました。また、エディタのスクリプトセクションにもインストールされています。問題が見つかったら、このリンクに行き、彼のスクリプトをチェックしてください。
Smooth Follow Script
[更新回答]
だけ新しいコインを集めてきている第二の問題のために。
このような状況をすべて確認してください。
- あなたのプレーヤーは新しく生まれ、
attractedTo
変数は空白です。
- 新しいスポーンされていないコインはすでにプレイヤーを参照しているはずです。プレイヤーをスポーンした場合、プレイヤーに引き付ける必要があることをすべてコインに伝える必要はありません。 - > Player Spawnedのときに
attractedTo
を割り当てます。
インスタントイニシアティブでこれを達成してから、TAGを持つすべてのゲームオブジェクトを見つけることができます。次に、getcomponentを次に割り当てますattractedTo
- あなたの非生存コインは、スクリプトコンポーネントを持っていません。
- あなたのスポーンされていないコインは無効になっています。
re1。乗算にTime.fixedDeltaTimeを追加し、何が起こるかを見てください。あなたはまっすぐ行くのに何を期待しますか? re2。あなたはコインをどのように産み出すのですか?どのコードが 'attractedTo'フィールドの値を設定しますか? –