HIROMARTBLOG

Unity、Cocos2d-xのこととか書けたらいいですね。

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~細かな設定~

      2015/03/25

前回までで、だいたいのゲームシステムは出来たいと思います。

今回は、細かな設定をしていきたいと思います。

宇宙戦闘機の移動制限

今のままだと、横移動するとカメラからフレームアウトしてしまいます。

なので、カメラから出ないように宇宙戦闘機に移動制限をつけたいと思います。

StarfighterControlを変更します。


using UnityEngine;
using System.Collections;

public class StarfighterControl : MonoBehaviour {

float X_Speed = 1;
float Z_Speed = 1;

public GameObject Prefab;
public GameObject EnemyObject;
public GameObject Explosion;
float intervalTime;
float enemyintervalTime;

// Use this for initialization
void Start() {
intervalTime = 0;
enemyintervalTime = 0;
}

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

float vertical = Input.GetAxis("Vertical");

float horizontal = Input.GetAxis("Horizontal");

if (Input.GetKey("up")) {
transform.Translate(0, 0, vertical * Z_Speed);
}
if (Input.GetKey("down")) {
transform.Translate(0, 0, vertical * Z_Speed);
}
if (Input.GetKey("left")) {
transform.Translate(horizontal * X_Speed, 0, 0);
}
if (Input.GetKey("right")) {
transform.Translate(horizontal * X_Speed, 0, 0);
}

intervalTime += Time.deltaTime;
if (Input.GetKey("space")) {
if (intervalTime >= 0.1f) {
intervalTime = 0.0f;
Instantiate(Prefab, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity);
}
}

// プレイヤーの座標を取得
Vector3 pos = transform.position;

pos.x = Mathf.Clamp(transform.position.x, -35, 35);

transform.position = pos;

enemyintervalTime += Time.deltaTime;
if (enemyintervalTime >= 4.0f) {
enemyintervalTime = 0;
Instantiate(EnemyObject, new Vector3(Random.Range(-35.0f, 35.0f), transform.position.y, transform.position.z + 200), Quaternion.identity);
}

}

void OnTriggerEnter(Collider coll) {
if (coll.gameObject.tag == "EnemyBullet") {
Instantiate(Explosion, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity);
Destroy(this.gameObject);
GameObject.Find("Main Camera").GetComponent<GameControl>().gameFlag = false;
}
}
}

 

52行目で、宇宙戦闘機のTransformのX軸を制限する処理を入れています。

自分の場合では、プラスマイナス35でいい感じにカメラ内に納まります。

いろいろ数値をいじって、自分に合うようにしてみてください。

敵の出現位置をランダムにする

今、敵は宇宙戦闘機の前にしか出てこないと思います。

これでは、ゲーム性があんまりないですね。(ヾノ・∀・`)ナイナイ

なので、敵の出現位置をランダムに変えたいと思います。

先ほど変えた、CameraControlの内容をまた変えます。

上に書いたのにもう追加しています。

59行目の[Instantiate(EnemyObject, new Vector3(Random.Range(-35.0f, 35.0f), transform.position.y, transform.position.z + 200), Quaternion.identity);]が少し変化しています。

敵の出現位置のX軸をプラスマイナス35にしています。[Random.Range(-35.0f, 35.0f)]

これで、敵が宇宙戦闘機の前だけではなくて、プラスマイナス35の範囲でランダムに出ます。

爆発エフェクトを削除する

次は、爆発エフェクトを削除する処理を追加していきます。

今だと、敵をたくさん倒すと、[Hierarchy]タブがこのようにたくさん爆発エフェクトのものが溜まっていきます。

3dShooting99

これを溜まらないように消したいと思います。

[Script]フォルダの中に[ExplosionControl]というソースファイルを追加してください。


using UnityEngine;
using System.Collections;

public class ExplosionControl : MonoBehaviour {

// Use this for initialization
void Start () {
Destroy(this.gameObject, 5);
}
}

弾の処理と同じですね。

爆発エフェクトが生成されて、5秒後に消えるというものです。

これを、[Prefab]フォルダ内にある爆発エフェクトのPrefabに追加してください。

これで、爆発エフェクトが[Hierarchy]タブにたまらなくなりました。

まとめ

これで、[3Dシューティングゲーム]の作り方の記事を終えたいと思います。

どれくらいの人が読んでくれたかわかりませんがありがとうございました!!

読んでいた人だとわかるかと思いますが、途中から結構めんどくさくなってしまっていて、適当な部分があったと思います。

最初は、記事に合わせ自分も作っていたのですが、それだと時間が何倍もかかってしまい、大変だったので、

まずは、ゲームを完成させて、記事を書いていくスタイルに途中から変えました。

その影響で、もしかしたら記事の通りにやっても動かないなどがあったかもしれません。

申し訳ないです。

この記事分まで、追加してもらえればたぶん動くと思います。

後日、GitHubというものに自分が書いたコードをすべてアップロードして、誰でもダウンロード出来るようにしておくので、

興味がありましたら、ダウンロードして見てください。

10記事の長い付き合いありがとうございました。

今後は、UnityやCocos2dxなどで、使えそうな便利機能を見つけたりしたら更新していこうと思います。

では。

 

GitHubで、ダウンロード出来るようになったらまたブログ内で告知します。

 - IT, Unity , , ,

広告

広告

Message

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

*

  関連記事

3Dシューティングゲームを公開

前回までで紹介してきた「プログラミング初心者でも簡単!Unity5で3Dシューテ …

Unity5にVisual Studio Tools for Unity ( UnityVS ) を追加する方法

最近リリースされた、Unity5では、今までのUnity4.6などと同じ方法では …

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~ゲームスタートボタン・リセットボタンの設置~

前回までで、ゲームのシステムがほぼ出来ました。 自機を動かす事、敵を生成する事、 …

簡単オンラインゲーム開発!!UnityとPhotonCloudで簡単実装~導入編~

今回から数回に分けて、UnityとPhotonCloudを使って、リアルタイムオ …

簡単オンラインゲーム開発!!UnityとPhotonCloudで簡単実装~カメラを追随させる~

前回の記事でアニメーションの同期を行いました。 今回の記事では、カメラをそれぞれ …

プログラミング初心者でもゲームが作れる!「Unity5」のインストール方法

今日、アップデートされたばかりの「Unity5」のインストールの方法を紹介してい …

Unity5!インストールしてから起動までの流れ!~アカウント登録~

前回の記事でUnity5のダウンロードからインストールまで紹介したと思います。 …

Windows環境でBitbucketとSourceTreeの導入(Bitbucketの設定とSourceTreeのインストール)

BitbucketとSourceTree使い方を数回の記事に分けて、投稿していこ …

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~カメラの設定~

前回の記事では、宇宙戦闘機から弾が発射するようになりました。 今回は、カメラの設 …

no image
Windows環境でBitbucketとSourceTreeの導入(フェッチとプルの使い方)

前回の記事では、コミット・プッシュの使い方を書いたと思います。 自分が変更した内 …