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

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

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

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

Unity

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

Flight

FlightはPHPマイクロフレームワークです。 構成はModelが存在せず、ViewとControllerに相当します。

Q&A

1回答

805閲覧

Unity C# ロケットを飛ばす機能 transform.SetParent(collision.transform)

TigerW

総合スコア0

C#

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

Unity

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

Flight

FlightはPHPマイクロフレームワークです。 構成はModelが存在せず、ViewとControllerに相当します。

0グッド

0クリップ

投稿2022/07/29 06:59

編集2022/07/29 07:04

TypeScriptで戦闘機を操作するflight simulationゲームを作っています。
ロケットを飛ばす機能を実装中に以下のエラー発生しました。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • [transform.SetParent(collision.transform)]機能を動作するようにする

発生している問題

OnCollisionEnterの中に書いたのにlogも出ないしペアレント設定にもならない。

該当のソースコード

using System.Collections; using System.Collections.Generic; using UnityEngine; public class RocketDestroyer : MonoBehaviour { public GameObject Rocket1; public GameObject Rocket2; public GameObject RocketPlace1; public GameObject RocketPlace2; float speed; private Transform player; private Camera mainCamera; public Vector3 hoge; private Vector3 currentPosition = Vector3.zero; void Start() { speed = 30.0f; // 弾の速度 player = GameObject.FindGameObjectWithTag("Player").transform; mainCamera = Camera.main; Rocket1.transform.localPosition = new Vector3(6.5f, 1.51f, -10); Debug.Log("ROCKET!!!"); Rocket2.transform.localPosition = new Vector3(-8, 1.51f, -10); } void Update() { if (Input.GetMouseButton(0)) { var distance = Vector3.Distance(player.transform.position, mainCamera.transform.position); //var これはfloat var とはかんたんに変数を表したもの(自動的に) var mousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, distance); //var Vector3 currentPosition = mainCamera.ScreenToWorldPoint(mousePosition); } if (Input.GetMouseButtonDown(0)) { // 弾(ゲームオブジェクト)の生成 GameObject clone1 = Instantiate(Rocket1, transform.position, Quaternion.identity); GameObject clone2 = Instantiate(Rocket2, transform.position, Quaternion.identity); // クリックした座標の取得(スクリーン座標からワールド座標に変換) Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); // 向きの生成(Z成分の除去と正規化) Vector3 shotForward = Vector3.Scale((mouseWorldPos - transform.position), new Vector3(1, 1, 0)).normalized; // 弾に速度を与える clone1.GetComponent<Rigidbody2D>().velocity = shotForward * speed; clone2.GetComponent<Rigidbody2D>().velocity = shotForward * speed; if (Input.GetMouseButtonDown(0)) { transform.SetParent(null); Debug.Log("transform.SetParent(null)"); } } } private void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Rocket Position") { transform.SetParent(collision.transform); } if (collision.gameObject.tag == "Target") { Rocket1.transform.localPosition = new Vector3(26.4f, 1.51f, 19.88f); Rocket2.transform.localPosition = new Vector3(-29.6f, 1.51f, 19.88f); } } void OnDrawGizmos() { if (currentPosition != Vector3.zero) { Gizmos.color = Color.blue; Gizmos.DrawSphere(currentPosition, 0.5f); } } }

試したこと

タグ変えたり言ったのそのpublic objectを外してもう一回つけてみたりしました。

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

Vr. 2019.4

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

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

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

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

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

fiveHundred

2022/07/29 07:19

まず、OnCollisionEnter()の先頭でDebug.Logを呼び出し、本当にOnCollisionEnter()が呼ばれているのかを確認してください。
TigerW

2022/07/29 07:21

分かりました
TigerW

2022/07/29 07:22

Debug 出ました
KomoriGameDev

2022/07/29 08:33

OnCollisionEnter()の先頭で Debug.Log(collision.gameObject.tag); を呼び出してタグの中身は確認しましたか? タグの中身が"Rocket Position"になっていることは確認しましたか?
TigerW

2022/07/29 17:09

分かりました確認してみますね
TigerW

2022/07/30 17:57

Tag は確認しました
guest

回答1

0

下記でどうでしょう。
修正前

if (collision.gameObject.tag == "Rocket Position") { transform.SetParent(collision.transform); }

修正後

if (collision.gameObject.tag == "Rocket Position") { transform.SetParent(collision.gameObject.transform); }

投稿2022/08/01 05:38

YOshim

総合スコア1085

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問