質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

8573閲覧

unityでプレハブ化した物体が動かない。

nakatsu6723

総合スコア38

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2016/12/07 15:41

###前提・実現したいこと
ボールと壁が衝突したときにその時のボールは消して、新たなボールをインスタンス化して、スペースを押したらまたボールが動き出すようにしたいです。インスタンス化までは実現できているのですが、スペースキーを押しても2個めからは動いてくれません。最初のボールはスペースを押せば動いてくれます。

###発生している問題・エラーメッセージ
MissingComponentException: There is no 'Rigidbody' attached to the "Ball(Clone)" game object, but a script is trying to access it.
You probably need to add a Rigidbody to the game object "Ball(Clone)". Or your script needs to check if the component is attached before using it.
UnityEngine.Rigidbody.get_velocity () (at /Users/builduser/buildslave/unity/build/artifacts/generated/common/modules/Physics/DynamicsBindings.gen.cs:1254)
BallScript.Update () (at Assets/Scripts/BallScript.cs:15)

###該当のソースコード
壁のスクリプト

using UnityEngine;
using System.Collections;

public class ButtomWallScript : MonoBehaviour {

public GameManager gameManager; public GameObject ballPrefab; Vector3 placePosition = new Vector3(0f, 0.6f, -7f); void OnCollisionEnter(Collision collision) { Destroy(collision.gameObject); if (gameManager.life > 0) { Instantiate ( ballPrefab, placePosition, Quaternion.identity ); gameManager.life--; } }

}

ボールのスクリプト

using UnityEngine;
using System.Collections;

public class BallScript : MonoBehaviour {

float speed = 15.0f; void Update () { if(Input.GetButtonUp("Jump") && GetComponent<Rigidbody>().velocity == new Vector3(0, 0, 0)) { GetComponent<Rigidbody>().AddForce((transform.forward + transform.right) * speed, ForceMode.VelocityChange); } } void OnCollisionEnter() { Rigidbody rigidbody = GetComponent<Rigidbody>(); rigidbody.velocity = rigidbody.velocity.normalized * 15; }

}

###試したこと
最初のボールは動きますが、プレハブ化したボールは出現はするのですが、動いてくれません。
アタッチはできているはずです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーメッセージを見る限り、ボールのプレハブにはRigidbodyが無いよって事らしいですね。
一つ目のボールは既にエディタ上で配置しているのですか?
もしそうなら、プレハブとエディタ上で配置したボールの間で違いが出ているのかもしれません。

投稿2016/12/08 01:17

ishi9

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nakatsu6723

2016/12/08 02:35

確認したところ、アセットの方にあるプレハブ化したボールにrigidbodyがついていなかったようです。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問