【ハルシオンブログ】オブジェクトがオブジェクトに当たった時に消すようにしたいよ!って時にこうやってます。
こんにちは!坂内っす。
今日は「オブジェクトが他のオブジェクトにあたったら消す」方法。
え?そうです。基本ですね。
例えば、弾が飛んでいき、壁にあたったら消えるようにします。
弾に以下のスクリプトを付けます
[Bullet.cs]
OnCollisionEnter2Dが「何か他のオブジェクトに衝突したとき」のメソッドです。

こんな感じで、当たるとBulletオブジェクトが消えます。
このタイミングでエフェクト(パーティクルを出してみましょう)
こんなエフェクトを用意しました。

これを弾が壁にぶつかった時にだすようにBullet.csを変更します。
[Bullet.cs]
変えたのはOnCollisionEnter2Dです。
foreach(ContactPoint2D point in collision.contacts)
で、当たった場所の座標が取れます。
これでこんな感じになると思います。

なかなかうまく当たりませんが(笑)
当たった場所からエフェクトが出てる感じになりますね。
というわけで、基本に戻ってゲームで使いそうなものを挙げてみました。
では、あでゅ~ノシ
今日は「オブジェクトが他のオブジェクトにあたったら消す」方法。
え?そうです。基本ですね。
例えば、弾が飛んでいき、壁にあたったら消えるようにします。
弾に以下のスクリプトを付けます
[Bullet.cs]
using UnityEngine;
public class Bullet : MonoBehaviour {
Rigidbody2D myRigid;
float SPEED = 7f;
private void Awake() {
myRigid = GetComponent<Rigidbody2D>();
}
void FixedUpdate() {
BulletMovement();
}
void BulletMovement() {
myRigid.velocity = new Vector2(SPEED, myRigid.velocity.y);
}
private void OnCollisionEnter2D(Collision2D collision) {
Destroy(gameObject);
}
}
OnCollisionEnter2Dが「何か他のオブジェクトに衝突したとき」のメソッドです。

こんな感じで、当たるとBulletオブジェクトが消えます。
このタイミングでエフェクト(パーティクルを出してみましょう)
こんなエフェクトを用意しました。

これを弾が壁にぶつかった時にだすようにBullet.csを変更します。
[Bullet.cs]
private void OnCollisionEnter2D(Collision2D collision) {
foreach(ContactPoint2D point in collision.contacts) {
GameObject effect = Instantiate(brokenParticlePref);
effect.transform.position = point.point;
}
Destroy(gameObject);
}
変えたのはOnCollisionEnter2Dです。
foreach(ContactPoint2D point in collision.contacts)
で、当たった場所の座標が取れます。
これでこんな感じになると思います。

なかなかうまく当たりませんが(笑)
当たった場所からエフェクトが出てる感じになりますね。
というわけで、基本に戻ってゲームで使いそうなものを挙げてみました。
では、あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】ポケガ2の中国版が出ましたよおおおおお! | 【ハルシオンブログ】Xcode8を入れなおしたら起動しなくなったって話。 »
コメント
| h o m e |