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
0 コメント