ゲームプログラミングをやってる高卒なんだけどキャラ移動の物理に疑問がある

1: 2019/06/23(日) 04:30:13.392 ID:KzahED9W0
2DゲームでX座標とY座標があるとするじゃん?
右に移動する時は1ピクセル動けるとして
上に移動する時も1ピクセル動けるとすると
右上にナナメに移動する場合右に1ピクセル、上に1ピクセル動かしたら加速するよね?

7: 2019/06/23(日) 04:33:25.949 ID:KzahED9W0
つまり右が押されたらプラス1じゃダメという事だよな?

8: 2019/06/23(日) 04:33:45.990 ID:eGzKMRn+a
移動速度1/√2 にすればいいじゃん

9: 2019/06/23(日) 04:33:52.957 ID:4PHa7jMa0
円で考えればどのくらい移動するのが正しいのかわかりそうなもんだが

13: 2019/06/23(日) 04:39:10.649 ID:zmNel56S0
>>9
パソコンにコンパスさせっていうの?

10: 2019/06/23(日) 04:36:47.302 ID:4zCB1SmY0
実際大昔のゲームみたいに座標を1ブロック単位とかの整数値で管理してると√2動かすわけにいかんし2周期に1回動かすとかしてもまた当たり判定とかの処理に問題が発生したりでうまくいかなかったりするんだよな

11: 2019/06/23(日) 04:38:22.007 ID:8BAWstBVM
>>10
なんで実数で管理しないの?

16: 2019/06/23(日) 04:41:49.395 ID:4zCB1SmY0
>>11
昔のポケモンとかどんなにボタン短く押しても人一人分の距離動くじゃん?
別に実装で実装すりゃいいんだけどRPGとかのパーツって20x20とかサイズ決まっててでかいからパーツ1個分動かしたほうが見栄えもいいし実装が楽

14: 2019/06/23(日) 04:39:52.232 ID:KzahED9W0
>>10
それなんだよ!
座標が1ピクセルずつだから小数点が使えない
つまり1フレーム目は動かない、2フレーム目は動くみたいな感じになるんだけどいいのかな?

15: 2019/06/23(日) 04:40:39.200 ID:Y0ihg5e6M
>>14
120fpsにしたら解決やん!

12: 2019/06/23(日) 04:38:44.292 ID:KzahED9W0
キャラの移動速度をhogeとして
右を押されたら
x = コサイン0度×hogeだけ動くが正解ということ?

17: 2019/06/23(日) 04:43:45.777 ID:ClN7kJfNa
むしろ意識して独自の物理法則にしないと気持ちいい操作性にならないよね

18: 2019/06/23(日) 04:44:42.253 ID:KzahED9W0
パソコンってドットの世界だから小数点表示は無理だよね?
つまり3Dゲームとかも1フレーム目と2フレーム目で移動速度が違っている感じになるのが普通って事なのかな?

21: 2019/06/23(日) 04:47:09.823 ID:Y0ihg5e6M
>>18
1フレレベルのちょい押しならともかく連続的に動かすならばれんやろ

24: 2019/06/23(日) 04:50:21.630 ID:KzahED9W0
>>21
60FPSの場合
0.016秒と0.032秒の違いは人間には判断できない?
これってディスプレイが0.1ドット表示とかわけわからないことしてくれない限り
3DCGも同じって事だよね?

19: 2019/06/23(日) 04:45:48.993 ID:LvMISIkL0
1フレーム止まると見栄え悪いから縦横2倍にしちゃうとか

22: 2019/06/23(日) 04:48:20.322 ID:KzahED9W0
>>19
え、でもそれって画面は同じだから必ずフレームごとに速度がかわるよね?
0.1ドットだけ表示出来るなら出来るんだろうけど

20: 2019/06/23(日) 04:46:40.689 ID:KzahED9W0
もっと言うと右に移動する場合は加速度になるの?
毎回1ピクセルではなく
1111、222、33、4みたいな?

23: 2019/06/23(日) 04:49:41.334 ID:+FjGkUZ00
1操作で10ピクセルくらい動くようにしたらいいんちゃうの?

25: 2019/06/23(日) 04:53:27.457 ID:KzahED9W0
>>23
なるほど45度の場合0.7ピクセルになるから
10倍したら7ピクセルになって誤差が少なくなると

26: 2019/06/23(日) 04:56:25.653 ID:KzahED9W0
十字キーだと45度ずつだけど
ジョイスティックはもっと細かい角度で移動できるって感じなのかな?

27: 2019/06/23(日) 05:07:00.333 ID:KzahED9W0
てか思ったけど十字キーのみなら常に45度しかないよね?
つまりクソ単純に
x=速度×0.7
y=速度×0.7
でいいのか?

28: 2019/06/23(日) 05:08:06.522 ID:KzahED9W0
右押された場合x += 速度
上押された場合y += 速度
右上押された場合
x=速度×0.7
y=速度×0.7
これでいいのか?

38: 2019/06/23(日) 06:23:46.287 ID:DMMIvvso0
>>28
基本的にはそれでいい
後は小数点をどう処理して整数にするかだな
切り上げ切り捨て四捨五入のどれにするか

39: 2019/06/23(日) 06:27:22.549 ID:KzahED9W0
>>38
考えはあってるということだよね?
ディスプレイは1ドットずつだからフレーム毎に実数になり移動は変わる?
業務だから車輪の再開発するんじゃの?1から作れば自由度が高いと言うか

41: 2019/06/23(日) 06:44:49.290 ID:DMMIvvso0
>>39
考えはあってる

>ディスプレイは1ドットずつだからフレーム毎に実数になり移動は変わる?
これは何言ってるか分からん

業務だと基本的には既存のエンジンやらライブラリやらを使う
1から作れば自由度高いけどよっぽど金と人手がある会社しかそんなことはできない

43: 2019/06/23(日) 07:14:33.440 ID:KzahED9W0
>>41
ドットってのは640×480のディスプレイなら
640粒のライトが横に並んでるじゃん?
キャラが0.5だけ横にズレた場合
ライト半分点灯させるなんて無理じゃん

46: 2019/06/23(日) 07:30:02.992 ID:DMMIvvso0
>>43
そういうときは数を丸めて0か1にする
内部では実数で実装されてても描画するときは整数に変換する

50: 2019/06/23(日) 07:38:54.159 ID:KzahED9W0
>>46
だからそうすると
1フレーム目と2フレーム目で速度が変わるじゃん

52: 2019/06/23(日) 07:46:31.848 ID:wt2pY+ay0
>>50
近似してるからそんなには速くならないだろ

53: 2019/06/23(日) 07:58:08.180 ID:KzahED9W0
>>52
2フレームだと
0.03秒で1ドットだからなぁ・・・

54: 2019/06/23(日) 07:58:40.479 ID:DMMIvvso0
>>50
それは誤差として許容するのが一般的だな
どうしても許容できないなら斜め方向への移動を禁じるしかない

29: 2019/06/23(日) 05:09:53.014 ID:KzahED9W0
0.707とかでもいいのか?

30: 2019/06/23(日) 05:14:09.900 ID:KzahED9W0
反応がないただのしかばねのようだ・・・

33: 2019/06/23(日) 05:48:20.955 ID:iIiSxBvU0
格ゲーならジャンプはゆっくりの方がいいけどスクロールアクションなら早い方がスタイリッシュだし加速していいんじゃね?
プログラム知らんけど

34: 2019/06/23(日) 05:50:50.843 ID:KzahED9W0
>>33
そういえば移動加速度とジャンプの加速度って物理的に絶対違うな

35: 2019/06/23(日) 05:52:11.561 ID:1R6smQV60
車輪の再発明をしないようにググって答えを見つけられるようにならないとダメだぞ

36: 2019/06/23(日) 06:13:59.684 ID:KzahED9W0
車輪の再発明が大好きなんだが・・・駄目なのかね?

38: 2019/06/23(日) 06:23:46.287 ID:DMMIvvso0
>>36
業務だと車輪の再発明してたら馬鹿にされるけど趣味なら別に

40: 2019/06/23(日) 06:44:38.785 ID:UfFxQxKh0
車輪の再発明を馬鹿にするのは車輪を作り出せない連中だけ(´・ω・`)

44: 2019/06/23(日) 07:19:13.553 ID:KzahED9W0
>>40
そうだよな!車輪の再開発は技術者には必要だろ

42: 2019/06/23(日) 06:50:18.463 ID:/esSehUd0
スーパーマリオは自然な挙動にする為に内部で小数を使ってる

45: 2019/06/23(日) 07:24:23.725 ID:cLGq2krS0
四聖なんたらってSTG作成講座にそんな話あった気がする

49: 2019/06/23(日) 07:38:17.335 ID:KzahED9W0
>>45
マジ?ちゃんと読むべきなんだな

47: 2019/06/23(日) 07:30:25.768 ID:XRkpjyipd
現実世界の物理をトレースすれば良ゲーになると思わないで
例えば横スクロールアクションのジャンプは現実世界だとジャンプの高さや距離ってジャンプした瞬間に決まるけど
ゲームだとジャンプした後にどのくらいジャンプボタンを押しっ放しにしているかとかで決まるから

48: 2019/06/23(日) 07:33:27.162 ID:oATbcqh60
別に斜めの方が早くて良いじゃん
グラディウスみたいに斜め移動は得、スピードアップで2ドット移動

51: 2019/06/23(日) 07:44:28.641 ID:oATbcqh60
シレンで斜め進むのに2ターン掛かったら嫌じゃん