Unity
Cardboard
VR
GearVR
ハコスコ

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

More than 1 year has passed since last update.

レーザービーム光線.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