Unity初心者です。
とあるQiitaの記事を見ながらブロック崩しを作っているのですが、
自分の動かすブロック(以後プレイヤー)が壁を貫通してしまいます。
(その記事では壁貫通について触れていません)
ご質問がありましたので、以下参考にしている記事です。
https://qiita.com/nmxi/items/7950fb12ef925efa276d
発生している問題
プレイヤーが壁を貫通してしまうのが気になり、プレイヤーのCollision Detectionの設定を変更し
一時は壁貫通を防げるようになりました。
しかし、プレイヤーの移動スピードを上げると壁を貫通するようになり
どうすれば壁貫通を防げるのかが分かりません。
(この場合設定をいじるのはプレイヤー側ではなくて壁の方が正しい?)
プレイヤーの移動は左右キーで行っています。
以下プレイヤーに使っているコードです。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Controller : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { if(Input.GetKey(KeyCode.LeftArrow)) { transform.position += transform.forward * 0.2f; }else if (Input.GetKey(KeyCode.RightArrow)) { transform.position -= transform.forward * 0.2f; } } }
試したこと
Collision Detection の設定をすべて試しましたがダメでした。
もしCollision Detection 以外で壁貫通を防げるものがあれば合わせて教えて欲しいです。
補足情報(+で気になること)
プレイヤーにRigidbodyの設定をつけると、壁貫通は防げますが
ボールに接触するとプレイヤーが跳ね返されてしまいます。
跳ね返りをConstraintsで防ぐと、今度は壁貫通してしまうようになります。。。
今はプレイヤーを重くして一時的に跳ね返りを防いでいますが、これの正しい対処法もわかりません。
初歩的な質問で申し訳ないですが、
ご教授いただけると幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー