1 回答

TA貢獻1804條經(jīng)驗 獲得超7個贊
根據(jù)您的嘗試,我假設(shè)您正在嘗試向與其碰撞的物體添加力。
首先,你做了:
if (myCollision.gameObject.name == "Cube")
{
var = GameObject.Find("Cube");
var.AddForce(new Vector3(0.0f, 0.0f, power));
}
盡量避免使用GameObject.Find(string)方法,因為這是一個昂貴的調(diào)用。
事實上,您甚至不需要這樣做,因為您實際上已經(jīng)擁有了正在碰撞的游戲?qū)ο?,這就是目的myCollision。
你可以這樣做:
if (myCollision.gameObject.name == "Cube")
{
var = myCollision.gameObject; // Aka the gameobject you have collided with.
var.AddForce(new Vector3(0.0f, 0.0f, power));
}
回到問題上來,您想要做的是向剛體添加力,但是var類型是GameObject,而不是RigidBody。
RigidBody您需要做的是從 獲取的組件GameObject,如下所示:
var.GetComponent<Rigidbody>().AddForce(...
請注意,如果 GameObject 沒有附加 Rigidbody 組件,則會發(fā)生空引用異常。
確保與您碰撞的立方體在 Unity 的檢查器中具有 RigidBody 組件。
另外,您可能需要注意,重復GetComponent()調(diào)用的成本可能會很高。如果可能的話,您可以考慮緩存它。
- 1 回答
- 0 關(guān)注
- 213 瀏覽
添加回答
舉報