忍者ブログ
まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

前々から気になっていたのですが、私の今のスクリプトだと縦横移動時と斜め移動時で
自機の移動スピードが違っていました。
これは移動処理を下記のように、斜め移動を考慮せずに斜め移動時は単純にx軸とy軸を
足して移動させていたからです。
こんな感じ↓
move=5
stick ky,15
xv=(ky>>2&1)-(ky&1);x軸移動処理
yv=(ky>>3&1)-(ky>>1&1);y軸移動処理
px=xv*move+px : py=yv*move+py;自機移動処理
pos px,py

この方法でもちゃんと動きますが、斜め移動時の移動スピードが縦横移動時よりも速く移動
してしまい不自然です。
で、色々と調べてみたところ、縦横移動時よりも斜め移動時の方がルート2倍速く移動する
事がわかりました。
ルート2ってのは「ひとよひとよにひとみごろ」なので1.41421356です。
(こんな所で役にたつなんて^^;)
1.41421356で計算するのは大変なので、1.41で考えてみます。
1.41倍移動すると言う事は、その逆の分移動させれば良いという事になります。
1.41倍の逆ってのは逆数を考えるようで、1.41の逆数は1/1.41になり
1÷1.41で0.70921・・・・・と言う事で約0.71倍の速さで移動すれば良いと言う事になります。
(計算&考え方合ってると思いますが、間違ってたら教えてください^^;)

それを踏まえて移動処理を考えてみました↓
斜め移動処理スクリプト
このスクリプトを起動させるここんな感じ↓
14fe55df.jpg
上下左右で自機移動
スペースを押すと斜め移動を考慮しない移動
エンターを押すと斜め移動を考慮する移動を行います。

スクリプトとしては↓のように
move=5.
stick ky,15
if xv!0 : if yv!0 : move=move*0.71;斜め移動の時の処理
xv=double((ky>>2&1)-(ky&1));x軸移動処理
yv=double((ky>>3&1)-(ky>>1&1));y軸移動処理
px=xv*move+px : py=yv*move+py;自機移動処理
pos px,py
縦横の両方ともが移動している場合に、移動量moveに0.71をかけています。

以上を踏まえて作成中のSolid State SURVIVORに組み込んでみたのですが
今まで斜め移動が速いのに慣れていたので、逆に不自然に感じでしまうのですが
そのうち慣れるだろうと思っています^^;
PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
Twitter
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新コメント
[04/20 kt.]
[04/19 うぇむ]
[11/24 kt.]
[11/21 NONAME]
[11/24 kt.]
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
忍者ブログ [PR]