簡體   English   中英

Unity中的磁鐵腳本問題

[英]Magnet script issues in Unity

我正在嘗試在Unity中制作磁鐵PowerUp。 我使用了此腳本,並將其附加到硬幣GameObject上:

public GameObject attractedTo; 

private float strengthOfAttraction = 3f;

void FixedUpdate ()
    {
    Vector3 direction = attractedTo.transform.position - transform.position;
    gameObject.GetComponent<Rigidbody>().AddForce (strengthOfAttraction * direction);
    }

我有兩個問題:1.只有新生成的硬幣被吸引到玩家手中2.由於某些原因,硬幣只能沿直線移動,因此它們中的大多數會經過玩家

有誰知道該如何解決? 任何幫助將不勝感激!

代碼上的主要問題。 您必須重新創建有關如何使硬幣更接近玩家的過程邏輯。

第一個主要問題是這個。

void FixedUpdate()因此,每幀固定的時間。 您正在嘗試聲明一個變量Vector3: Vector3 direction = attractedTo.transform.position - transform.position;

因此,框架將重新計算並創建一個新的指針名稱direction然后嘗試找到gameObject.GetComponent<Rigidbody>().AddForce (strengthOfAttraction * direction); 您在gameObject中的自己的組件。 然后致電Addforce。 AddForce。 而且您甚至都沒有使用time.deltatime。

Addforce將根據您輸入的方向推動剛體。 所以它會一直下去。 並且您正在執行每秒每幀固定數量的幀。

首先修復您的程序。 我的建議是這個。

使用平滑跟蹤腳本。 由Unity3D制造,在那里可以找到您的參考。 它還已經安裝在編輯器的腳本部分中。 如果找不到問題,請轉到此鏈接並檢查腳本。

平滑跟隨腳本

[ 更新答案 ]

對於第二個問題,只有新硬幣被吸引。

檢查所有這些情況。

  1. 您的播放器是新生成的,您的attractedTo變量為空白。
  2. 非新生成的硬幣應該已經參考了玩家,否則,您必須告訴所有硬幣,如果您生成了玩家,則它們需要被玩家吸引。 - >分配attractedTo當球員催生。

您可以通過實例化實現,然后找到所有帶有TAG的GameObject。 然后getcomponent然后分配attractedTo

  1. 您未生成的硬幣沒有腳本組件。
  2. 您未生成的硬幣已被禁用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM