前提・実現したいこと
ここに質問の内容を詳しく書いてください。
現在Unityを勉強しているのですが、見本の通りコードを書いて、エラーも出ませんでした。しかし、途中のコードが反映されないのでどこがいけないのかアドバイスが欲しいです。
発生している問題・エラーメッセージ
ボールをパドルに当てた時、ボールを破壊したいのですが、ifの中のコードが反映されません。
該当のソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallScript : MonoBehaviour { private float speed; // Start is called before the first frame update void Start() { speed = Random.Range(5f,15f); } // Update is called once per frame void Update() { transform.position += new Vector3(0f,0f,-1 * speed * Time.deltaTime); } private void OncollisionEnter(Collision collision) { if (collision.gameObject.CompareTag("Paddle")) { Destroy(gameObject); collision.gameObject.transform.localScale -= new Vector3(Random.Range(0.2f,1f),0f,0f); if(collision.gameObject.transform.localScale.x < 1.0f) { collision.gameObject.transform.localScale = new Vector3(1.0f,1.0f,1.0f); } } } }
試したこと
ある程度調べてみたりいじってみたりしたのですが、直りませんでした。
補足情報(FW/ツールのバージョンなど)
Visual Studio Codeを使用しております。
どっちのifですか? 質問文は分かりやすく書いてください。
どちらにしろifの前に「Debug.Log(collision.gameObject.tag);」「Debug.Log(collision.gameObject.transform.localScale.x);」と入れて、実際の値がどうなっているか確認してみてください。
ありがとうございます。次から気を付けます。
どちらのif反映されません。
Debug.Logを入れてみてもコンソールに表示されませんでした。
ということは衝突判定自体が起こっていません。
(このようにまずは自分で出来る限り調べて問題を絞り込んでください)
まずメソッド名「OncollisionEnter」の3文字目のCは大文字にする必要があります。
それでも反応しない場合は以下ページ等を参照して諸々確認をしてください。
https://indie-du.com/entry/2015/02/04/200000
わざわざありがとうございます!調べる癖つけます。
大文字にしたら反応しました。ありがとうございました。
解決したなら自己回答して質問クローズをお願いします。
回答1件
あなたの回答
tips
プレビュー