【Unity】Version2 当たり判定
ショットガンで敵を倒す(当たり判定)
環境メモ
⭐️Mac OS Mojave バージョン10.14
⭐️Unity 2018.2.15f1
実際に動かした動画はこちら↓↓
https://twitter.com/nonnonkapibara/status/1066154795570946048
Version2. 当たり判定
— non (@nonnonkapibara) November 24, 2018
ショットガンで敵を倒す(⭐️当たり判定⭐️)を勉強したよぉ。
O(≧∇≦)O pic.twitter.com/GpKwPPpLT0
1.キャラクター「ZoomBear」を配置する
2.「ZoomBear」をプレハブにする
3.プレハブ化した「ZoomBear」を追加する
4.シーン上に、ZoomBearを選択し、「Capsule Collider」を追加する
5.Rigidbodyを追加する
6.「Capsule Collider」の「Is Trigger」をチェックONする
「Rigidbody」の「Is Kinematic」をチェックONする
※Capsule Collider :円柱
[Capsule Collider]-[Is Trigger]・・・[OFF]:衝突せず、すり抜ける/[ON]:衝突する
[Rigidbody]-[Is Kinematic]・・・[OFF]:物理演算無効にする/[ON]:有効にする
7.コライダーを編集状態にして、キャラクターを囲む
8.プレハブにも反映させる為、Applyする。
9.[Layers]-[Edit Layers]を選択する
10.「BulletLayer」と「EnemyLayer」レイヤーを追加する
11.プレハブの「Bullet」のレイヤー「BulletLayer」にする
12.プレハブの「ZoomBear」のレイヤ「EnemyLayer」にする。
Apply押す。
13.子のオブジェクトまで変更する「Yes, change children」を選択する
14.[Edit]-[Physics]よりPhysicsManagerを開く
15.「BulletLayer」と「EnemyLayer」間の衝突を設定する
16.「ZoomBear」に、EnemyScript.csを追加する。
Apply押す。
17.「bullet」のコンポーネント[Bulle Destroy.cs]を追加する。
Bullet Scripに衝突時、破棄する処理を書く
■BulletScript
>|cs|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
* Prefabsの「bullet」
*/
[RequireComponent(typeof(Rigidbody))]
public class BulletScript : MonoBehaviour {
//RequireComponentは、アタッチし忘れを防ぐ。ここではRigidbodyは必須。
// 球のスピード
[SerializeField] float spped = 10f;
void Start () {
// 速度
var velocity = spped * transform.forward;
var rigid = GetComponent<Rigidbody>();
// AddForceはrigidbodyへの継続的な力を追加
// VelocityChangはrigidbodyに瞬時に速度変化を追加
rigid.AddForce(velocity, ForceMode.VelocityChange);
}
// トリガーに入った時
private void OnTriggerEnter(Collider other)
{
// ÉnemyScript.csを呼んで球が敵に当たると敵がDestroyする
other.SendMessage("OnHitDestroyStart");
Destroy(gameObject);
}
}
||<
■EnemyScript
>|cs|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
* Prefabsの「ZomBear」
*/
public class EnemyScript : MonoBehaviour {
/*
*BulletScript.csから呼ばれる。球が敵に当たると敵がDestroyする
*/
void OnHitDestroyStart()
{
Destroy(gameObject);
}
}
||<