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

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

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

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

Flight

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

受付中

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

TigerW
TigerW

総合スコア0

C#

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

Flight

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

1回答

0リアクション

0クリップ

211閲覧

投稿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

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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 は確認しました

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

Flight

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