摘み入れ地点

ゲームプランナー見習いが得た知見を書いてガチャ代金を稼ぐ場所。

ちょー簡単なゲームを作ってリリースしたい(自機を動かす編)

はい。続きです。桜花賞は全部外れました。さようなら、全ての馬券。

これまでの記事はこちら。

 

ちょー簡単なゲームを作ってリリースしたい(企画書編) - 摘み入れ地点

ちょー簡単なゲームを作ってリリースしたい(環境構築~適当に自機を作る編) - 摘み入れ地点

Visual Studioの設定(背景色変更、フォント変更、補完が効くように設定)

スクリプティングするにあたっての色替えとかフォント変更をしました。

www.curict.com

docs.microsoft.com

github.com

ethanschoonover.com

docs.microsoft.com

この辺のリンクを参照。久しぶりに見てもSolarizedは綺麗で良い。一番最後のやつはやらないと補完処理が全く効かなかったのでやりました。前やったときは何もしなくても効いていたと思うんけどね。Unity側で全部自動でインストールしてもらったからそのせいかな?

 

キー入力できるようにする(Input-GetKey)

docs.unity3d.com

先に実装イメージを打ち出ししてみます。

 

  • 移動(WASDによって実施)
    • シンプルに、キーを押している間だけ移動する挙動にする
  • ブースト
    • キーを押した瞬間に、上の移動している方向に速度を加える
    • 一時的にめっちゃ移動するけど、あとで減速して普通の移動と同じ速度に戻る
    • アーマードコアのクイックブーストがイメージとしては近い 
    • 押した瞬間から少しの間移動速度が速く、その後少ししてから元の移動速度に戻る、という挙動

 

ブーストの参考挙動はこちら。

youtu.be

なんとなく何がしたいかもイメージできたので、さっさとキーボード入力で移動させることができるようにしよう、ってんでサクッとスクリプトを書こうとおもったんですが、ゲームのコアな部分になるのでどの方法で移動させるかで少しだけ悩みました。

今回のゲームはシューティングっぽい挙動の実現なので、物理演算のような込み入ったことはやらない予定。であることを考えると、素直にtransform.Translateを使うのがよさそうだと考えたので、いったんはそんな風に実装してみました。

また、ブーストについても似たような挙動をすることで実装を考えます。

f:id:tsumire-sunajima:20210411213346p:plain

AnimationCurveの様子。押した瞬間めっちゃ速度が乗るが、その後少しずつ速度が遅くなる。

上のグラフのように1フレームごとに移動する距離が伸びて、そのあと元に戻る、という挙動をすれば、多分良い感じになるんじゃないかな、と思い実装してみます。

このグラフですが、これはUnityのAnimationCurveというものだそう。

docs.unity3d.com

動的にも生成できるっぽいけど、エディタ上で操作してグラフの傾きとかをいじる使い方をしている人が多かったので私もそうしてみることに。アニメーションって名前だけど別にアニメーション以外にも使用できるようで、今回は移動距離をこのグラフの分だけ加算する感じで実装することに。この辺は後からもっといい実装が無いかとか考えてみたいけど、とりあえず手っ取り早く動かせそうだし、物理演算で加速と減速をちょっとずつ調整するの大変そうだからいったんこれで実装してみた。

自機の挙動&ブーストの挙動

 連発してブーストできるように実装したところがこの実装のキモ。押した瞬間に強制的に経過時間を0にして実現している。

ただ、ちょっとまだ速度が速すぎて、実装できていることは確認済みなんだけど、ゲーム的に良いかは微妙。今の実装だと、1回押したらそのあと結構な間移動速度が上がる動きになるので、これって本当に狙ってた挙動なのか?についてはなんとも。敵とか、ブーストの回数制限とか、そういう部分を実装してから再度挙動をいじる風になりそうだな、と思った。

 

次回はステージ広くするのと、速度調整した後に、余裕があったら敵のポップを実装する予定。