かぴばらさんの覚書ブログ (nonkapibara 自分メモ)

かぴばらさんの覚書ブログ (nonkapibara 自分メモ)

Unity勉強中です。 AR、VR、エンターテイメント全般、ワクワクする事が大好き♪♪ O(≧∇≦)O イエイ!!

【Unity】Version2 当たり判定

ショットガンで敵を倒す(当たり判定)

環境メモ

⭐️Mac OS Mojave バージョン10.14

⭐️Unity 2018.2.15f1

 

実際に動かした動画はこちら↓↓
https://twitter.com/nonnonkapibara/status/1066154795570946048

 

1.キャラクター「ZoomBear」を配置する

f:id:nonkapibara:20181124194941p:plain

2.ZoomBear」をプレハブにする

f:id:nonkapibara:20181124195013p:plain

3.プレハブ化した「ZoomBear」を追加する

f:id:nonkapibara:20181124195047p:plain

f:id:nonkapibara:20181124195110p:plain

f:id:nonkapibara:20181124195131p:plain

 

4.シーン上に、ZoomBearを選択し、「Capsule Collider」を追加する

f:id:nonkapibara:20181124195251p:plain

5.Rigidbodyを追加する

f:id:nonkapibara:20181124195328p:plain

6.Capsule Collider」の「Is Trigger」をチェックONする

Rigidbody」の「Is Kinematic」をチェックONする

Capsule Collider :円柱

[Capsule Collider]-[Is Trigger]・・・[OFF]:衝突せず、すり抜ける/[ON]:衝突する

[Rigidbody]-[Is Kinematic]・・・[OFF]:物理演算無効にする/[ON]:有効にする

f:id:nonkapibara:20181124195439p:plain

7.コライダーを編集状態にして、キャラクターを囲む

f:id:nonkapibara:20181124195516p:plain

8.プレハブにも反映させる為、Applyする。

f:id:nonkapibara:20181124195553p:plain

9.[Layers]-[Edit Layers]を選択する

f:id:nonkapibara:20181124195616p:plain

10.BulletLayer」と「EnemyLayer」レイヤーを追加する

f:id:nonkapibara:20181124195639p:plain

11.プレハブの「Bullet」のレイヤー「BulletLayer」にする

f:id:nonkapibara:20181124195702p:plain

12.プレハブの「ZoomBear」のレイヤ「EnemyLayer」にする。

Apply押す。

f:id:nonkapibara:20181124195726p:plain

13.子のオブジェクトまで変更する「Yes, change children」を選択する

f:id:nonkapibara:20181124195751p:plain

14.[Edit]-[Physics]よりPhysicsManagerを開く

f:id:nonkapibara:20181124195823p:plain

f:id:nonkapibara:20181124195846p:plain

 

15.BulletLayer」と「EnemyLayer」間の衝突を設定する

f:id:nonkapibara:20181124195904p:plain

16.ZoomBear」に、EnemyScript.csを追加する。

Apply押す。

f:id:nonkapibara:20181124195935p:plain

17.bullet」のコンポーネント[Bulle Destroy.cs]を追加する。

Bullet Scripに衝突時、破棄する処理を書く

f:id:nonkapibara:20181124200015p:plain

 

■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);
    }
}

||<