1

Unity3dでAndroidプロジェクトを使用しています。立方体の表面で球を転がします。ただし、再生ボタンをクリックすると、エラーメッセージが返されます。

Assets/Scripts/Player.js(4,1): BCE0005: Unknown identifier: 'rigidBody'.

私のコード:

function Start () {
  rigidBody.velocity.x=15;
 }

リジッドボディコンポーネントはすでに球に追加されています。発生したエラーの解決策を模索したいと思います。

4

7 に答える 7

2

リジッドボディにGetComponent変数を設定したかどうかはわかりませんが、ケースを削除する必要があるかもしれません。

例えば:

rigidBody.velocity.x=15;

だろう:

rigidbody.velocity.x=15;

お役に立てば幸いです。

于 2012-08-16T08:23:39.703 に答える
2
  1. まず、「rigidBody」ではなく「rigidbody」です
  2. 次に、Unity 5以降では、「剛体」を使用できなくなったため、GetComponentを使用する必要があります。

再開すると、「rigidBody」をそのまま使用するには、他の人がすでに回答したように、最初に初期化する必要があります。

//link you rigidbody here:
public Rigidbody rigidBody; 

 function Start() {
  //Or if the script is on the GameObject that has the rigidbody component:
  //rigidBody = GetComponent<Rigidbody>();
    rigidBody.velocity=new Vector2(15,0);
}
于 2016-10-22T22:30:28.660 に答える
1

リジッドボディを初期化するのを忘れたと思います。また、rigidBody.velocity.xは読み取り専用の値であるため、このような速度を割り当てることはできません。このコードは次の場合に役立ちます。

public Rigidbody rigidBody;

function Start(){
    rigidBody.velocity=new Vector2(15,0);
}
于 2016-04-17T22:27:42.703 に答える
0

変数「rigidBody」を初期化していません。しかし、それはあなたの目的ではないと思います。スクリプトをコンポーネントとして球に追加している場合は、getComponentを使用する必要はありません。代わりに、次のようになります。

"Rigidbody.velocity.x = 15;"

「newVector3(x、y、z);」を使用する必要がある場合があります。新しいベロシティを渡します。その場合、コードは次のようになります。

Rigidbody.velocity = new Vector3(15、Rigidbody.velocity.y、Rigidbody.velocity.z)*

  • 現在2Dで作業しているため、Vector3のパラメーターがオフになっている可能性があります。
  • Rigedbodyは正しいと思いましたが、それは剛体である可能性があります-上記を参照してください。

いずれにせよ、コライダーを忘れないでください。隆起した物体は他の物体と自動的に衝突しませんが、重力の影響を受けます。ついにそれを理解した後、私は喜びからキャラクターを舗装に20フィート落としました。あなたがそれほどうるさくないなら、血をレンダリングすることは驚くほど簡単です。

于 2015-01-17T19:14:41.890 に答える
0

最初にインスペクターにリジッドボディコンポーネントを追加する必要があります:

Rigidbody sphereRigidbody;
function Awake(){
sphereRigidbody = GetComponent<Rigidbody>();
sphereRigidbody.velocity = new  Vector3(15,0,0);
}
于 2016-08-24T13:13:31.590 に答える
0

C#の場合

最初にキャッシュすることをお勧めします。

    private Rigidbody rigidbodyCached;

    //cache
    void Start(){
    rigidbodyCached = this.GetComponent<Rigidbody>();
    }

    //for velocity movements use FixedUpdate instead of Update
    void FixedUpdate(){
    rigidbodyCached.velocity = new Vector3(15,0,0);
    }
于 2017-02-08T04:41:12.857 に答える
0

Unityが5未満の場合(おそらく)、rigidbodyやaudiosourceなどのゲームオブジェクトのコンポーネントを使用するためのアクセス権がありますが、Unity 5以降では、このコードのようなアウェイクまたはスタート機能のどちらでもそのコンポーネントへの参照を追加する必要があります

private Rigidbody rb;

void Start() {
     rb = GetComponent<Rigidbody>();
     // AND AFTER YOU ADDED THE REFERENCE FOR RIGIDBODY 
     // THEN CHANGE THE VELOCITY LIKE THIS
     rb.velocity.x = 20; 

}
于 2017-08-25T06:01:03.337 に答える