unityでランダムに自動生成されたオブジェクトの当たり判定について行き詰ったので質問させていただきます。
void BlockCreate()
{
GameObject blocks = prefabs[Random.Range(0, prefabs.Length)];
Instantiate(blocks, new Vector3(0, 20, 0), Quaternion.identity);
このメソッドでブロックを自動生成して
if (Input.GetMouseButton(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, Mathf.Infinity))
{
var targetPos = new Vector3(hit.point.x, transform.position.y, hit.point.z);
この別のクラスのメソッドでブロックをRayCastが当たった位置に移動させています。
ブロックは自動生成され、重力にしたがって落下してきます。
しかし、生成されたブロックをクリックしてしまうと、変な位置に移動してしまい、
ゲームとして成り立たなくなってしまいました。
そこで、自動生成されたブロックは自動生成されてからの2.8秒間だけ、
RayCastには当たらないようにしたいです。
if (timer < 2.8f)
{
GetComponent<BoxCollider>().enabled = false;
上記のif文をRayCastを飛ばしているメソッドの中に加えて実行してみたところ、
ブロックに対して、RayCastは当たらなくなりました。
しかし、今制作中のゲームにはそのほかにブロックが積まれていくフロアーと
すでに落下しているブロックがあります。
それらにはRayCastが当たるようにしたいのですが、上記のif文を加えたところ、
ブロックはフロアーをすり抜けてしまいました。
ですので、生成されてからの2.8秒間、生成されたブロックはRayCastにのみ当たり判定をなくしたいです。
ご教授よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/10 15:53