unityでシューティングっぽいのを作る2

前回の記事
前回までで背景を表示して自機を動かすまでやりました。

今回は敵の弾を動かしたいと思います。
まず画面の上から下へ1発だけ弾を動かします。
その際、垂直に落とすのではなくて
ランダムな方向へ撃ちたいと思います。

上から下へのY方向の速度は一定とします。
ランダムな方向に撃つのでX方向の値をランダムに変えてやれば良さそうですな。

1.プロジェクトビューの敵の弾の画像(Etama)をシーンビューにD&D。

2.敵の弾を動かすスクリプトを作る。
プロジェクトビューのcreate→C#script
名前をEsmoveにしました。

3.スクリプトに色々書き込んでいく。

最初に敵弾のx方向を入れる変数(esx)を宣言。
float esx = 0;

で、スタート関数内でX方向の値をランダムに決定しようとして
float esx = Random.Range (-0.03f, 0.03f);
って書いちゃったからうまく行かずに苦しみました。
こう書くとなんでか下のupdate関数に反映されず、
垂直に弾が落ちることに。
つまりesx=0になってた。

ここでは
this.esx = Random.Range (-0.03f, 0.03f);
こう書くと思い通りの動きになりました。

正直thisの使い方がよくわからんのです^^;

///////////////////////////////////////////

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Esmove : MonoBehaviour {

float esx = 0; //敵弾のx方向を入れる変数を宣言。

void Start () {

//↓ここでfloat esx = … としてしまうと下のtransform.Translate に反映されない!苦しんだ俺!
this.esx = Random.Range (-0.03f, 0.03f); //敵弾のx方向の軌道をランダムに決める
}

void Update () {
transform.Translate (this.esx, -0.1f, 0); //敵弾を動かす処理
if (transform.position.y < -5.0f) {
//画面下に消えるとオブジェクトを消す

Destroy (gameObject);

}

}

}

///////////////////////////////////////////

4.書けたら保存してヒエラルキービューのEtamaにD&Dしてアタッチする。

5.実行してみる。


やったー
弾がランダムな方向に飛んでいくよー ^^v

——————————–
ー広告ー



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です