20
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

初めに

はじめてゲームプログラミングで空のおさんぽシリーズやサカナのお屋敷シリーズを作っている ASaDa と申します。
不慣れで稚拙な記事ですがご容赦ください。

おさんぽシリーズの一つの「すべる空のおさんぽ」でヒトノードンを滑らしたんじゃが、その方法を解説していくんじゃ。

記事の内容を仕組みデータとして公開したんじゃ。IDは G 005 2V8 V0K じゃ。

完成品じゃ

長所じゃ

  • 床の材質に左右されないんじゃ
  • 滑る滑らないのオンオフができるんじゃ
  • 滑り具合や最高速度の調整ができるんじゃ

短所じゃ

  • 壁に当たっても減速しないんじゃ
  • 床が傾いていても動かないんじゃ
  • ジャンプの瞬間や着地の瞬間の挙動に違和感があるんじゃ

改善出来たら教えてほしいんじゃ。

理論を考えるんじゃ

※とにかく動けばいい人はこの章まで飛ばしてください
いきなり作っていくのではなく、よく考えた方がいいんじゃ。

滑るとはなんじゃろか

摩擦力が小さいということじゃ。
人は歩くときに地面を蹴って、その時の摩擦力で前に進んでいるんじゃ。止まるときも同じで、地面との摩擦力で止まっているんじゃ。この力が小さくなるから、進みにくかったり止まりにくかったりするんじゃ。
もう少し詳しく考えるんじゃ。力が小さいとはどういうことじゃろう。力とは物体を加速させるものじゃ。それが小さいということは、物体の加速が小さいということじゃ。加速というのは速度の変化のことじゃな。
つまり、滑るとは速度の変化が小さいということじゃ。ヒトノードンの速度の変化を小さくすれば滑っているように見えるんじゃ。

図で表すとこうじゃ

速度グラフ.png

縦軸がヒトノードンの移動速度、横軸が時間じゃ。このグラフでは速度の変化量はグラフの傾きじゃな。
通常時はスティックを倒した直後に最高速度に到達し、最高速度のまま移動するんじゃ。そしてスティックを放した直後に速度が0になり止まるんじゃ。
滑る時はスティックを倒している間(上限はあるんじゃが)徐々に速くなっていき、スティックを放してもそのままの速度で移動するんじゃ。

プログラムを作っていくんじゃ

ヒトノードンにうごかせるものノードン(速度)を付けて、ヒトノードンを動かしていくんじゃ。速度をカウンターに保存して、スティック入力でその速度を変化させていくんじゃ。

ヒトノードンを動かなくするんじゃ

ヒトノードンの走っているアニメーションを使いたいので、スティックの入力をポートにつなぐ必要があるんじゃ。そうすると勝手に移動してしまうのでまずはそれを止めるんじゃ。
スティックの入力に‐5をかけてうごかせるものノードンに入力するんじゃ。
2022122400460600_s.jpg

ヒトノードンの大きさや速度によって調節が必要じゃ。
これでうごかせるものノードンの移動がヒトノードンの移動になるんじゃ。

ヒトノードンを動かすんじゃ

今回は2.5秒間スティックを倒し続けると最高速度になるように作っていくんじゃ。
速度を保存するためにカウンターを使うんじゃ。カウンターの設定を‐150から150のはんい制限にして、変化するタイミングを0以外のときずっとにするんじゃ。
2022122316192300_s.jpg
スティックの入力をカウンターにつなぎ、速度を変化させるんじゃ。その値に0.1をかけることで速度を調節して、うごかせるものノードンに入力するんじゃ。
2022122316301500_s.jpg

地上は完成じゃ。

ジャンプに対応するんじゃ

ジャンプをした時は地面に足がついていないので、滑らないときと同じにするんじゃ。ただしジャンプ前の速度は保ったままじゃ。またゲーム内では空中でも移動できるんじゃが地上よりは動けない(踏ん張りがきかない)、というところも作っていくんじゃ。

ジャンプ中かどうかを知るために足にセンサーを付けるんじゃ。このセンサーの出力が0と等しければ空中、0より大きければ地上ということじゃ。(負の値は考えないんじゃ)
2022122316201000_s.jpg

地上にいたときは動かないように‐5をかけていたんじゃが、空中では0にするんじゃ。(本当は空中で動く分を打ち消すのがいいんじゃが、空中ダッシュができるようになったりそもそも少ししか動かなかったり、といった理由から0じゃ) この値を地上にいるかどうかと掛け算するんじゃ。

次に、空中では地上より速度の変化を小さくするんじゃ。
地上ではスティックの入力の1倍をカウンターに入力していたんじゃが、空中では0.5倍したものをカウンターに入力すればいいんじゃ。

まとめるとこうじゃな。
2022122400421700_s.jpg

完成じゃ。
センサーやうごかせるモノノードンを見えなくしたり、うごかせるモノノードンの接続をバネバネにしたりするといいんじゃ。

省ノードン化じゃ

今回は説明のためにたくさんのノードンを使ったんじゃが、マッピングを駆使するとここまで減らせるんじゃ。
省ノードン4.jpg

最後に

最後まで読んでいただいてありがとうございました。
割と簡単に滑らせられるのでやってみてほしいんじゃ。
改良出来たら教えてほしいんじゃ。

20
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?