ソースはこちらで公開しています。
https://github.com/matsushima-terunao/unity-chan
実際のゲームはこちら
http://ter.dip.jp/blog_unity/unity-chan/build/web/web.html
Hierarchy 上の bear を Assets に移動
Hierarchy 上の bear を削除
好きな武器を選んで、プレイヤーの右手(Character1_RightHand)にドロップします。
ここまでで再生してみます。
弾丸が敵にヒットして消えれば OK です。
← 3-3. Unity でユニティちゃんアクションゲームを作る - 当たり判定の追加
↑ 一覧
https://github.com/matsushima-terunao/unity-chan
実際のゲームはこちら
http://ter.dip.jp/blog_unity/unity-chan/build/web/web.html
敵の生成
敵を Prefab 化します。Hierarchy 上の bear を Assets に移動
Hierarchy 上の bear を削除
MainScript
敵を生成を行う処理を追加します。...
/** プレイヤー */
var player: GameObject;
/** 敵 */
var enemyPrefab: GameObject;
/** 敵 */
var enemies: GameObject[] = new GameObject[10];
...
function Start () {
player = GameObject.Find("unitychan_dynamic_locomotion");
}
function Update () {
// 敵生成
for (var i: int = 0; i < enemies.length; ++ i) {
if (null == enemies[i]) {
var position: Vector3 = Vector3(
player.transform.position.x + 10 * Mathf.Sin(player.transform.eulerAngles.y * Mathf.PI / 180) + 10 * Random.value - 5,
0,
player.transform.position.z + 10 * Mathf.Cos(player.transform.eulerAngles.y * Mathf.PI / 180) + 10 * Random.value - 5);
var angle: Quaternion = Quaternion(0, Vector3.Angle(position, player.transform.position), 0, 1);
enemies[i] = Instantiate(enemyPrefab, position, angle);
break;
}
}
}
...
武器の追加
武器を追加します。Asset Store の Modern Weapons Pack を利用しました。今までと同様、Assets に Import します。好きな武器を選んで、プレイヤーの右手(Character1_RightHand)にドロップします。
弾丸の追加
Sphere で弾丸を作成します。敵と同様に Prefab 化します。UnityChanScript
弾丸を発射する処理を追加します。...
/** 攻撃時刻 */
var attackTime: float = 0;
/** 弾丸時刻 */
var bulletTime: float = 0;
/** 弾丸 */
var bullets: GameObject[] = new GameObject[2];
/** 弾丸 */
var bulletPrefab: GameObject;
...
function Update () {
var currentTime: float = Time.time;
// 攻撃
if (Input.GetButtonDown ("Fire1")) {
animator.SetTrigger("Attack");
transform.Find("Attack").gameObject.SetActive(true);
attackTime = currentTime;
}
// 攻撃終了
if (Time.time >= attackTime + 1) {
transform.Find("Attack").gameObject.SetActive(false);
}
// 弾丸発射
MainScript.Log("cou", bullets.length);
if (currentTime - bulletTime >= 0.1) {
for (var i: int = 0; i < bullets.length; ++ i) {
if (null == bullets[i]) {
bullets[i] = Instantiate(bulletPrefab, transform.position + transform.forward + transform.right * 0.2, transform.rotation);
bullets[i].rigidbody.velocity = transform.forward * 10;
Destroy(bullets[i], 1);
bulletTime = currentTime;
break;
}
}
}
}
...
EnemyScript
敵が弾丸に当たったときの処理を追加します。function OnCollisionEnter (collision: Collision) {
MainScript.Log("enemy", collision.gameObject.name);
if ("Attack" == collision.gameObject.name) {
Damage();
} else if ("Bullet(Clone)" == collision.gameObject.name) {
Damage();
Destroy(collision.gameObject);
}
}
ここまでで再生してみます。
弾丸が敵にヒットして消えれば OK です。
このアセットは、『ユニティちゃんライセンス』で提供されています。このアセットをご利用される場合は、『キャラクター利用のガイドライン』も併せてご確認ください。
← 3-3. Unity でユニティちゃんアクションゲームを作る - 当たり判定の追加
↑ 一覧
0 件のコメント:
コメントを投稿