新作ゲームの開発を始めました!
コードネームは「lagopus」
雷鳥の意味です。
名前の意味は特にないのですが、
コードネームは統一感がある名前の方が良さげなので
地球上でも種類の多い鳥類の名前にしようかと思いました。
このゲームはアクション要素の強いディフェンスゲームを目指していて
プレイヤーは飛び回って銃を打ちまくってコアを敵から守ります。
お助け要素として様々なギミックを駆使して敵を押さえることもできますが
あくまで戦うのはプレイヤー自身、タワーディフェンスではなくディフェンスアクションです。
フリーゲームの「花咲か妖精」に近い感じで
ナイフじゃなくて銃を使って防衛するイメージですかね。
で、現状の開発状況は以下の感じです
動く、飛ぶ、狙う、撃つ、食らうが現状できているので
アクションゲームとしてはひとまず形になっています。
ここからギミックを追加して敵がウェーブ毎に出るようにすることで
いい感じになっていく予定です。
で、ここからは開発の話
まず狙った所に向くというモーションをいかにして実現しているかですが、
UnityのAnimation機能を使っています。
まず上から下に向くまでの180度を180Fのアニメーションで作ります
次にキャラの中心からポインターまでの角度を出します。
MP→マウスポインタ
CenterPoint→キャラの中心
float gx = MP.transform.position.x - CenterPoint.position.x;
float gy = MP.transform.position.y - CenterPoint.position.y;
float rad = Mathf.Atan2(gy, gx);
gunAngle = rad * Mathf.Rad2Deg * -1 + 90;
最後に出てきた角度の最大を180、最小を0としてアニメーションのコマを引っ張り出せば完成
PChandAnime.Play(PChandAnimeInfo.shortNameHash, -1, gunAngle / 180);
あとはダメージ中に敵オブジェクトとの当たり判定を消す方法ですが
[Edit]→[Project Setting]→[Physics2D]
で、レイヤー同士の当たり判定を設定することができます。
ダメージ中専用のレイヤーを使って切り替えることで
レイヤーが変わっている間は敵との当たり判定が消えます・
レイヤーの変更はこんな感じ
gameObject.layer = LayerMask.NameToLayer("PlayerDamage");
調べてたら間違った方法で設定できるよと書いてる記事があったりしたので注意してね
0 件のコメント:
コメントを投稿