LoginSignup
12
9

More than 5 years have passed since last update.

Unity5でVR開発 シューティングゲームが作りたくて2 レーザービーム発射

Posted at

レーザービーム光線.png

0. プロローグ

今回はレーザービーム光線を出します!
写真はGoogle Cardboard SDKのものです。

注視点のポインターとGameObjectが重なった時ごにょごにょする方法はこちら!

□ハコスコ編 (Google Cardboard SDK for Unity)
http://qiita.com/39_isao/items/6a9ffa1c6df3ebb197c2

□Gear VR編
http://qiita.com/39_isao/items/438bd4aa38fc46c09914

1.まずはレーザービームを作る

こちらの記事を参考に、Line Rendererでレーザーを作ります。
レーザー光線を作る【Unity】
http://aki-tk.hateblo.jp/entry/2016/01/02/193747
私はBeamというGameObject名にしました。
アクセスしやすいよう、「Beam」というタグを設定しておきます。
スクリーンショット 2016-06-14 10.59.28.png

2.レーザービームの設定

1.BeamのLine Rendererコンポーネントを非アクティブにしておきます。
(敵にヒットした時にアクティブにします。)

2.Beam.csというビーム発射と停止の
制御スクリプトを書いて、アタッチします。

スクリーンショット 2016-06-14 11.02.12.png

Beam.cs
using UnityEngine;
using System.Collections;

public class Beam : MonoBehaviour {

    // Use this for initialization
    void Start () {


    }

    // Update is called once per frame
    void Update () {

    }

    /* ビーム発射 */
    public void FiringBeam(GameObject[] objs){
        var lineRenderer = GetComponent<LineRenderer>();
        lineRenderer.enabled = true;
        lineRenderer.SetPosition(0, objs[0].transform.position);
        lineRenderer.SetPosition(1, objs[1].transform.position);
    }

    /* ビーム終了 */
    public void Exit(){
        var lineRenderer = GetComponent<LineRenderer>();
        lineRenderer.enabled = false;

    }
}

3. 銃口の設定

ビームが発射される銃口にしたいGameObjectに「Muzzle」というタグを設定します。
今回私は潜水艦オブジェクトの先端にしました。

4. 撃たれるオブジェクトの設定

ビームで撃たれるGameObject(以後、敵と表記)に下記Scriptをアタッチします。

Enemy.cs

using UnityEngine;
using System.Collections;

public class Enemy : MonoBehaviour {

    private GameObject Beam;
    private GameObject Muzzle;

    void Start () {
        // BeamとMuzzleオブジェクトの取得
        Beam = GameObject.FindWithTag("Beam");
        Muzzle = GameObject.FindWithTag("Muzzle");
    }

    // Update is called once per frame
    void Update () {

    }

    // ビームの始点と終点を引数で持たせ、BeamオブジェクトにSendMessageする関数
    public void SendBeam(){
        GameObject[] objs = new GameObject[2];
        objs[0] = this.gameObject;
        objs[1] = Muzzle;
        Beam.SendMessage("FiringBeam",objs);
    }

    // ビームが消える処理を呼ぶ関数
    public void ExitBeam(){
        Beam.SendMessage("Exit");
    }
}

5.ビームで撃たれるGameObjectにイベントトリガー設定

スクリーンショット 2016-06-14 11.30.36.png

マーカーが重なった時、ビームが表示され、外れると消えるようにします。

Pointer Enter.... 注視点マーカーと敵が重なった時のイベント
Enemy.SendBeam()を設定
Pointer Exit... 注視点マーカーが敵から外れた時のイベント
Enemy.ExitBeam()を設定

この辺はこちらの記事で
http://qiita.com/39_isao/items/6a9ffa1c6df3ebb197c2

Gear VRの場合はイベントトリガーは使わず、コードで書きました。

6.完成!

hoge.png

12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9