ページ 11

左右に動く床(リフト)に乗っているときのプレイヤーの移動

Posted: 2022年8月07日(日) 23:42
by ぺぽ
標題の挙動に違和感があるので質問させてください。

プレイヤーが左右に動く床(リフト)に乗っているとき、プレイヤーの座標移動量は
「リフトの移動量」+「プレイヤーの移動量」としています。
ワールド座標(ゲーム内での座標)で見たとき、移動量自体はこれで正しいように思います。

ただ、リフトの上でプレイヤーが左右に往復してみると、
(1)リフトと同じ方向に移動すると移動が速く感じる、
(2)リフトと逆方向に移動すると遅く感じる、という体感になります。
これはカメラのスクロール(※)があるからそう感じるのだと思うのですが、
 ※リフトの移動量が2、プレイヤーの移動量が3の場合、
  (1)は、カメラのスクロール量が2+3=5、
  (2)は、カメラのスクロール量が-2+3=1

他のゲーム(昔の曖昧な記憶ですがロックマンなど)ではリフト上での動きに
違和感は感じなかった気がします。
「リフトの移動量」+「プレイヤーの移動量」という計算式は一般的ではないのでしょうか。
このようなケースの計算式のセオリーがあればお教えいただきたく、よろしくお願いいたします。

Re: 左右に動く床(リフト)に乗っているときのプレイヤーの移動

Posted: 2022年8月08日(月) 12:06
by usao
オフトピック
移動体の上に載ってるときには移動体の移動速度がキャラクタに作用するのに
そこでジャンプした瞬間にその作用がゼロになるゲームも多い気がするので
そこらへんのルールは「ゲーム内容に合うもの」で良いのでは.

物理的な正しさ(?)方向にこだわると,「落下中のリフトから飛び移る」とかすっごい難しくなる気がしますし.

Re: 左右に動く床(リフト)に乗っているときのプレイヤーの移動

Posted: 2022年8月09日(火) 11:34
by usao
それはそれとして,(「一般的」とか「セオリー」とかいわれると私は知らんのですが)ごくふつーに(?)考えれば

> 「リフトの移動量」+「プレイヤーの移動量」

で良いと思います.

あなたのいう「カメラのスクロール」というのが 何なのか/違和感に関してどのような影響を与えているのか/etc は不明ですが,
プレイヤー vs 背景(:リフトと関係ないもの) の観点で見てやれば妥当に見えるのではないでしょうか.

Re: 左右に動く床(リフト)に乗っているときのプレイヤーの移動

Posted: 2022年8月09日(火) 21:47
by ぺぽ
usaoさん、ご回答ありがとうございます。

確かにプレイヤー vs 背景で見れば、移動量で見ても妥当ではあります。

「カメラのスクロール」とは、マリオやロックマンのような横のマップスクロールのことです。
プレイヤーが常に画面中央となるようにスクロールを追従させています。

前述の例のように、リフト上でプレイヤーが左右に往復すると、
マップのスクロール量が1のときと5のときがあって、プレイの上であくまで個人的な感覚上ですが
気持ちが良くなく感じます。
とはいえ、基本的には「リフトの移動量」+「プレイヤーの移動量」を設定しなければならなさそうなので、
リフトの移動量自体を遅くするか、加算させるプレイヤーの移動量にいくらか係数をかける等、
自分が納得いく挙動を色々試してみようと思います。

この度はC言語とは直接関係のないテーマにも関わらず、ご回答いただきありがとうございました。

Re: 左右に動く床(リフト)に乗っているときのプレイヤーの移動

Posted: 2022年8月10日(水) 10:58
by usao
違和感が無かったゲームの動きを実際に見て(プレイ環境が無いなら,動画を探すとか?),ご自身のプログラム と何が違うのか? というのを探してみると良いのかもしれません.

マリオやロックマンといったゲームでも

> プレイヤーが常に画面中央

だっただろうか…? とか.私も正確には覚えていません.
ひょっとしたら「遊び幅」(:画面中央のある幅の中ならばスクロール無しでキャラクタが左右に動くみたいな)があったのかもしれません.