[英]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制造,在那里可以找到您的參考。 它還已經安裝在編輯器的腳本部分中。 如果找不到問題,請轉到此鏈接並檢查腳本。
[ 更新答案 ]
對於第二個問題,只有新硬幣被吸引。
檢查所有這些情況。
attractedTo
變量為空白。 attractedTo
當球員催生。 您可以通過實例化實現,然后找到所有帶有TAG的GameObject。 然后getcomponent然后分配attractedTo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.