🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Unity

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

Q&A

解決済

1回答

2914閲覧

衝突時のオブジェクトの座標取得

moyomoto_

総合スコア1

C#

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

Unity

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

0グッド

0クリップ

投稿2021/01/22 07:18

前提・実現したいこと

ボールオブジェクトがブロックに衝突したときにブロックをdestroyしてブロック座標を取得し、そこからアイテムオブジェクトを生成する(アルカノイドのような)

発生している問題・エラーメッセージ

ブロックの座標ではなくブロックと衝突した時の座標を取得してしまっている

該当のソースコード

c#

1using System.Collections; 2using UnityEngine; 3 4public class BlockController : MonoBehaviour 5{ 6 GameObject ItemGenerate; 7 8 Vector3 BrockPos; 9 10 private void OnCollisionEnter(Collision collision) 11 { 12 int rnd = Random.Range(0, 6); // ボールがブロックにぶつかったらアイテム生成判定 13 14 BrockPos = collision.gameObject.transform.position; // ぶつかったブロックの座標取得 15 16 17 if(collision.gameObject.tag=="Sphere") 18 { 19 if (rnd <= 2) // 生成しない 20 { 21 Destroy(gameObject); 22 } 23 else // ブロックの座標と乱数を渡してアイテム生成 24 { 25 ItemGenerate.GetComponent<ItemGenerator>().ItemGenerate(BrockPos, rnd); 26 Destroy(gameObject); 27 } 28 } 29 }

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

問題発生時のcollision.gameObjectは衝突してくるボールなのでその座標を取ってしまっているのが原因かと思います。

このクラスはブロックにアタッチさせているようなので下記の部分を修正して下さい。

C#

1BrockPos = collision.gameObject.transform.position; // ぶつかったブロックの座標取得 23BrockPos = gameObject.transform.position; // ぶつかったブロックの座標取得

gameObjectと書けば自身のGameObjectを取得出来るのでそこから座標を取得して下さい。
若しくはthis.gameObjectでも取得できます。

投稿2021/01/22 07:43

編集2021/01/22 07:46
Hawn

総合スコア1222

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問