まったくのプログラミング素人の筆者が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倍の速さで移動すれば良いと言う事になります。
(計算&考え方合ってると思いますが、間違ってたら教えてください^^;)
それを踏まえて移動処理を考えてみました↓
斜め移動処理スクリプト
このスクリプトを起動させるここんな感じ↓
上下左右で自機移動
スペースを押すと斜め移動を考慮しない移動
エンターを押すと斜め移動を考慮する移動を行います。
スクリプトとしては↓のように
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に組み込んでみたのですが
今まで斜め移動が速いのに慣れていたので、逆に不自然に感じでしまうのですが
そのうち慣れるだろうと思っています^^;
自機の移動スピードが違っていました。
これは移動処理を下記のように、斜め移動を考慮せずに斜め移動時は単純に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倍の速さで移動すれば良いと言う事になります。
(計算&考え方合ってると思いますが、間違ってたら教えてください^^;)
それを踏まえて移動処理を考えてみました↓
斜め移動処理スクリプト
このスクリプトを起動させるここんな感じ↓
上下左右で自機移動
スペースを押すと斜め移動を考慮しない移動
エンターを押すと斜め移動を考慮する移動を行います。
スクリプトとしては↓のように
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
この記事にコメントする
カレンダー
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/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事