読者です 読者をやめる 読者になる 読者になる

Unity5(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity9】UNETでゾンビ生成時にユニークなIDを付ける!【UNET13】

いつもひよこのたまごをご利用下さいましてありがとうございます!
おかげ様でチュートリアル数も10ゲーム目となりました!
チュートリアル一覧は
こちら からどうぞ!


スポンサーリンク

Unity5.1.1p3 Personal(2015年7月)


前回の続きです〜


今回はゾンビ1体ずつにユニークなIDを付けます〜


プレイヤーがゾンビから攻撃を受けた時やプレイヤーがゾンビを狙撃した時に、ダメージ情報をIDと紐付けてサーバーへ送り、全クライアントとデータと同期する、といった時等に使われます〜



UNET Part 13 - Zombie Identity - YouTube

【目標】ゾンビ生成時にユニークなIDを付ける

①Zombie_IDスクリプトを新規作成

まずはゾンビにIDを付けるZombie_IDスクリプトを作成します〜以下ソースです〜

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class Zombie_ID : NetworkBehaviour {
	
	[SyncVar] public string zombieID;
	private Transform myTransform;
	

	// Use this for initialization
	void Start () {
		myTransform = transform;
	}
	
	// Update is called once per frame
	void Update () {
		SetIdentity();
	}
	
	void SetIdentity ()
	{
		if (myTransform.name == "" || myTransform.name == "Zombie(Clone)") {
			//zombieIDは、GameManager_ZombieSpawnerクラスにて設定される
			myTransform.name =zombieID;
		}
	}
}

Zombie_ID.cs


SetIdentityメソッドにて、名前がブランクか「Zombie(Clone)」の時にzombieIDという名前を付けているだけです〜


ゾンビが生成された時にも名前を付ける必要がありますので、前回作成したGameManager_ZombieSpawnerスクリプトに加筆していきます〜

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class GameManager_ZombieSpawner : NetworkBehaviour {

	[SerializeField] GameObject zombiePrefab;
	[SerializeField] GameObject zombieSpawn;
	
	private int counter;
	private int numberOfZombie = 10;
	
	public override void OnStartServer ()
	{
		for (int i = 0; i < numberOfZombie; i++) {
			SpawnZombies();
		}
	}
	
	void SpawnZombies()
	{
//********** 開始 **********//
		counter++;
//********** 終了 **********//
		
		GameObject go = GameObject.Instantiate(zombiePrefab, zombieSpawn.transform.position, Quaternion.identity) as GameObject;
		NetworkServer.Spawn(go);
//********** 開始 **********//
		//ZombieにIDをつけていく
		go.GetComponent<Zombie_ID>().zombieID = "Zombie " + counter;
//********** 終了 **********//
	}
	
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

GameManager_ZombieSpawner.cs


SpawnZombiesメソッドにてカウンターを回していき、Zombie_IDスクリプトのzombieIDに「Zombie」 + カウンター数で名前をつけています〜


今回はこれだけです〜

②結果

それではゲームを実行してみて下さい〜


f:id:hiyotama:20150716141431p:plain
Zombie 1〜Zombie10生成


無事IDをつけることができました〜


今回はここまでです〜

ありがとうございました〜


【Unity9】UNETでマルチプレイヤーなオンラインゲーム開発【UNET1】
【Unity9】UNETでプレイヤーの動きを補間し、なめらかな動きを実現する【UNET1-2】
【Unity9】UNETでネットワーク越しに傾き(Rotation)を同期させる【UNET2】
【Unity9】UNETでオンライン開始時のプレイヤー生成位置を変更する【UNET2-2】
【Unity9】UNETのネットワークトラフィックを軽減し、効率化する【UNET3】
【Unity9】UNETのlatency(遅延時間)を改善する【UNET4】
【Unity9】UNETのlatency(遅延時間)を表示して、ちょっとだけ改善する【UNET4-2】
【Unity9】UNETのSyncVarのhookの使用例と、前時代の同期方法【UNET5】
【Unity9】UNETを使ってRotationを同期させる【UNET6】
【Unity9】UNETで各プレイヤーにPlayerIDを設定する【UNET7】
【Unity9】UNETで敵プレイヤーにダメージを与える!【UNET8】
【Unity9】UNETでHPを画面に表示し、Playerへダメージを与える【UNET9】
【Unity9】UNETでHPが0以下になった時、Playerを破壊する!【UNET10】
【Unity9】UNETで死んだPlayerを生き返らせる!【UNET11】
【Unity9】UNETでゾンビAIを出現させる!【UNET12】
【Unity9】UNETでゾンビ生成時にユニークなIDを付ける!【UNET13】
【Unity9】UNETでゾンビを撃つ!【UNET14】
【Unity9】UNETでゾンビに攻撃させる!【UNET15】
【Unity9】UNETでゾンビの動きをスムーズにシンクロさせる!【UNET16】
【Unity9】UNETでゾンビ発生地点を増やす【UNET17】
【Unity9】UNETで発生したバグを取り除く【UNET18】
【Unity9】Unity MultiPlayerを使ってネットワーク越しにマッチメイキング!【UNET19】
【Unity9】GUIを改善して、Network Managerを見やすくする!【UNET20】
【Unity9】表示したGUI(Network Manager)を機能させる!【UNET20-2】
【Unity9】UNETでAnimationを同期させる!【UNET21】