見出し画像

ゼロ戦で空中戦をしたい 逃げる敵

 零式艦上戦闘機に求められる性能とは高度3000mからの急降下爆撃機と高度20mの雷撃機とのフォーメイション攻撃と砲弾観測機の排除だと思っている。その性能要求が対戦闘機に生かされていると思っている。だから運動性能がもっと優れている複葉機に付いて行く事ができれば零戦の性能が再現されると思う。運動性能とは翼の面積を自重で割れば出る公式があり小回りが効くことは旋回性能が良いということ。旋回する時に膨らみが小さければ内に入れる。

このGrammam Duckは飛行ルートを設定して飛んでいる。Unity waypointで検索すればScriptが出てくる。これに付いて行くには零戦をコントロールする方法を少し変えなければならないとわかった。今まではマウスの移動量で零戦の上下左右を決めていたがこれだとマウスの移動量と零戦の移動量が正確にわからずミスを取り返す為に判断も遅れる。なので零戦の性能を維持し少し動くスピードを上げるためにフライトシミュレーターに触らずキー入力を付け加える。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotationZero : MonoBehaviour
{


    // Update is called once per frame
    void Update()
    {
        //Aキーを押している間はY軸に1加算して回転
        if (Input.GetKey("d"))
        {
            float x = 0.5f;
            this.transform.Rotate(0.0f, x, 0.0f);

        }
        //Dキーを押している間はY軸に1減算して回転
        if (Input.GetKey("a"))
        {
            float x = -0.5f;
            this.transform.Rotate(0.0f, x, 0.0f);
        }

        //Dキーを押している間はY軸に1減算して回転
        if (Input.GetKey("z"))
        {
            float y = -0.5f;
            this.transform.Rotate(0.0f, 0.0f, y);
        }
        //Dキーを押している間はY軸に1減算して回転
        if (Input.GetKey("x"))
        {
            float y = 0.5f;
            this.transform.Rotate(0.0f, 0.0f, y);
        }
    }
}

 

 さてこれが正しいかどうかはカメラ次第でどうにでも見えるのが現実だ。テレビや映画の中にカメラマンがいる様にゲームの世界にも映像の専門家がいる。画面では2Dだけどもゲームの中は3Dの空間で計算されているので空間認知がずれる。鏡を見ながら自分の髪を切ると失敗するのと同じくらいずれる。実は3Dゲームで一番勉強しなければならない。3Dゲームのカメラは2Dの数倍覚える事がある。そしてカメラは演出に関係する。アニメなどのアクションシーンで登場人物の顔のアップがあるが、ゲームならゲーム中にアップがあればその隙にゲームオーバーになってしまう。ワンカメラにするか切り替える複数のカメラにするかアニメーションやAIでカメラを動かすかはよく考えなければならない。一番はCinemachineとTimelineを覚えて使った方が時間的に早く解決する。でも覚えることは少なくない。


夢は100万の大軍を動かすゲームを作ることです。それまでには時間がかかりますが応援お願いします!