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で3Dシューティングゲーム開発!!~弾の作成とそれのPrefab化~

前回の記事では、宇宙戦闘機を動かすところまでやったと思います。 今回は、その宇宙 …

簡単オンラインゲーム開発!!UnityとPhotonCloudで簡単実装~アニメーションの同期~

目次1 前回の記事の変更2 Photon Animator Viewの追加3 o …

Unityで作ったアプリをケーブルでAndroid実機で動かす方法

個人でUnityを使って作ったゲームを実機で動作するのかを試したい時ってあります …

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~ソースファイルの作成とゲームオブジェクトへの追加~

前回の記事で AssetStoreの使い方を書いたと思います。 今回から、少しだ …

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

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

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~AssetStoreの使い方とシーンへの追加~

前回の記事 でプロジェクトの作成とUnityの設定をしたと思います。 今回は、A …

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

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

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

今回は、敵の作成を行います。 目次1 準備2 敵機体のインポート2.1 Scri …

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

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