第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

GameObject' 不包含'AddForce' || 的定義 Unity3D

GameObject' 不包含'AddForce' || 的定義 Unity3D

PHP
神不在的星期二 2024-01-20 16:05:51
我有一個錯誤:'GameObject' does not contain a definition for 'AddForce' and no accessible extension method'AddForce' accepting a first argument of type 'GameObject' could be found (are you missing a using directive or an assembly reference?)代碼:public float power = 500.0f;GameObject var;void OnCollisionEnter(Collision myCollision) {if (myCollision.gameObject.name == "Cube") {    var = GameObject.Find("Cube");    var.AddForce(new Vector3(0.0f, 0.0f, power));  }}我想在與其他對象發(fā)生碰撞時更改當前對象的坐標。
查看完整描述

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)用的成本可能會很高。如果可能的話,您可以考慮緩存它。


查看完整回答
反對 回復 2024-01-20
  • 1 回答
  • 0 關(guān)注
  • 213 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號