衝突に伴うオブジェクト処理
Modify Object due to Collision
ボールが当たったら消滅するオブジェクトを設置してみましょう。
操作手順
Procedure
ブロックの配置
Hierarchy/+ボタン/3D Object/Cubeで立方体を追加し、名前をBlockに変更し、オレンジ色など適当な色を付けます。
Cubeを選択した状態でInspectorのPositionを(0, 0, 3.5)、Scaleを(0.75, 1, 0.25)に変更します。
同じく、「Block」という名前のタグを生成して、更に生成されたタグを適用します。
ブロックの消去処理の追加
BallのC#Scriptのアイコンをダブルクリックしてエディタで開き、以下のようにコードを追加します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ball : MonoBehaviour
{
public float speed = 3.0f;
void Start(){
GetComponent<Rigidbody>().velocity= new Vector3(speed, 0, speed);
}
void Update(){
}
void OnCollisionEnter(Collision c){
var o=c.gameObject;
if( o.CompareTag("Block") ){
Destroy(o);
}
}
}
今まではスクリプトがアタッチされたオブジェクトの操作のみでした。今回初めてボール(Sphere)にアタッチされたスクリプト内で、ボール以外のオブジェクトであるブロックを操作しています。このように自分自身以外のオブジェクトの処理をするためには、そのオブジェクトを何らかの方法で指定する必要が出てきます。今回はオブジェクトのタグを照合することにより衝突した物体がブロックかどうかを判定しています。
ボールが当たったらブロックが消えることを確認してください。
今回はここまでです。
【事後学習】キー入力、タグ機能について復習しておきましょう。