続きです。
今日は、敵戦車が攻撃してくるようにしてみたいと思います。
<頭部の回転スクリプト>
TankHeadにくっつけました。
using UnityEngine;
using System.Collections;
public class EnemyHeadController : MonoBehaviour {
public Transform hyouteki; //標的
public float kaitenSokudo; //頭回転速度
void Update () {
//回転
Vector3 soutaiKakudo = hyouteki.position - transform.position;
Quaternion kaiten = Quaternion.LookRotation(soutaiKakudo);
transform.rotation = Quaternion.Slerp(transform.rotation, kaiten, kaitenSokudo * Time.deltaTime);
}
}
<弾発射スクリプト>
Barrelにくっつけました。発射間隔を調整できるようにしました。
using UnityEngine;
using System.Collections;
public class EnemyHasshaController : MonoBehaviour {
public Rigidbody shot; //弾Prefab
public Transform shotSpawn; //弾発生ポイント
public float shotPower; //弾の勢い
private float hasshaTime; //経過時間
public float hasshaKankaku; //発射間隔
void Start ()
{
hasshaTime = 0.0f;
}
void Update () {
//発射時間調整
hasshaTime += Time.deltaTime;
//弾丸発射
if (hasshaTime>hasshaKankaku)
{
Rigidbody dangan = Instantiate(shot, shotSpawn.position, shotSpawn.rotation) as Rigidbody;
dangan.rigidbody.AddForce(shotSpawn.forward * shotPower);
hasshaTime = 0.0f;
}
}
}
<プレイしてみると...>
1対1の戦いです。
<戦車ゲームの元ができました>
リアルからはほど遠いですが、何とか戦車ゲームっぽくなりました。
本当は弾道計算して、砲身の角度を変えられるようにすればいいのでしょうが、何だか難しい数式なので諦めました。
戦車の頭の部分も車体に対して平行に回転しないといけないのですが、どうやっていいか分かりません。
もっと勉強して、いつか実現してみたいなぁと思っています。
<ゲーム風に...>
今回練習したことなどを使って、ゲーム風にして遊んでみました。題して、
矢印キーで移動回転、スペースバーで弾丸発射、rとfキーで砲身の上下です。敵戦車を全部外に放り出せば勝利です。
とりあえず、「戦車ゲームが作りたい...」シリーズこれで終了にします。
-----------------
<ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
こういったゲームのひな形的なTIPをWebに公開されていて非常にありがたいです。
次回作も楽しみにしています
お役に立てたなら嬉しいです。かっこいい戦車ゲームできるといいですね。
当方スクリプトがよく分からなくて七転八倒してます。亀の行進状態です。一歩ずつ、少しずつ進んで行けたら、と思っています。