前回では戦車がとりあえず動きました。これだけでも動き回れて楽しかったりしますが、ここからがややこしいです。
戦車の頭が回転するということ、そして砲身が上下するということが絡んできます。
<頭の回転>
戦車の頭を回転するためのスクリプトをくっつける。左右なので、qとeを割り当てました。
using UnityEngine;
using System.Collections;
public class HeadController : MonoBehaviour {
public float atamaKaitenSokudo;//頭回転速度
void FixedUpdate () {
//頭回転
if (Input.GetKey("q"))
{
transform.Rotate(0, -atamaKaitenSokudo,0);
}
if (Input.GetKey("e"))
{
transform.Rotate(0,atamaKaitenSokudo,0);
}
}
}
<砲身の端を中心に回転させる>
砲身の中心で回転すると変なことになってしまうので、EmptyObjectに入れ子にし、砲身をZ軸方向にずらしました。
その時、大事なことはPivotボタンをオンにしておくことです。(Centerでは変なことになってしまいます)
<砲身のスクリプト>
砲身のスクリプトを親にくっつけました。回転角の制限をもうけないとぐるぐる回しの大砲になってしまします(笑)。下10°、上60°に設定してみました。
上下の動きをどのキーにするか迷いました。適当なものが見つかりませんので、rとfにしておきました。
using UnityEngine;
using System.Collections;
public class BarrelController : MonoBehaviour {
public float houshinKaitenSokudo;//砲身回転速度
private float kaitenKaku; //砲身角度
void Start ()
{
kaitenKaku = 0.0f;
}
void FixedUpdate () {
//砲身上下
if (Input.GetKey("r"))
{
if (kaitenKaku >-60)
{
transform.Rotate(-houshinKaitenSokudo,0,0);
kaitenKaku -= houshinKaitenSokudo;
}
}
if (Input.GetKey("f"))
{
if (kaitenKaku < 10)
{
transform.Rotate(houshinKaitenSokudo,0,0);
kaitenKaku += houshinKaitenSokudo;
}
}
}
}
<入れ子構造にする>
<プレイしてみると>
よく砲身をある方向に向けながら車体は回転し移動していくパフォーマンスを見ますが、そういうこともできました。「おお、戦車ぁ~!」
-----------------
<ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>