お初で失礼いたします。
龍神録プログラミングの館を参考に、STGを作っているのですが、
第9章の「キャラクタの移動制御」をそのままコピペして実行してみました。
すると、確かに動くはうごくのですが動き方がおかしく、スピードに偏りがあるのです。
いろいろやってみてわかったのですが、左と上に移動するときになぜか速度が遅くなり、
逆に右と下に移動すると早くなるんです。
いろいろと試してみましたが、初心者なのでいまいちどこがおかしいのか分からずに・・・。
本当にまるまるコピーで使っているのでコードは書かないでおきます。
*あとちょっとした疑問。
自機の構造体に、自機のXY座標宣言がありましたがそれはdouble型でした。
そしてDrawRotaGraphFで、わざわざfloat型で呼び出ししてます。
いちいち警告で型の変換が出てびっくりします・・・。
自機の移動について
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 自機の移動について
まるまるコピーと言っても、他の部分が違えば動作に違うところが出てくることは良くあります。
もとの龍神録のコードで同じ問題が出るか確認してみてください。
※ 龍神録のサイトでソースコードがダウンロードできます。
よく分からないならソースコードを貼ってもらうのが一番良いと思います。
[追記]
元のコードでも問題が出るならDXライブラリを最新にしてもらうと直るかも知れません。
龍神録の元のコードでコンパイルしたときにDrawRotaGraphFでエラーが出るかも確認してみてください。
VisualStudioのバージョンなどで違いがあるのかも知れません。
もとの龍神録のコードで同じ問題が出るか確認してみてください。
※ 龍神録のサイトでソースコードがダウンロードできます。
よく分からないならソースコードを貼ってもらうのが一番良いと思います。
[追記]
元のコードでも問題が出るならDXライブラリを最新にしてもらうと直るかも知れません。
龍神録の元のコードでコンパイルしたときにDrawRotaGraphFでエラーが出るかも確認してみてください。
VisualStudioのバージョンなどで違いがあるのかも知れません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
夜光
Re: 自機の移動について
いろいろやってみましたが、低速移動機能とかいらないかなぁと思ったので、
このように凄く単純なものにしました。
もう動けばそれでいいかと思います。
DrawRotaGraphFのエラーは、この俗に言う加速度の変数、XとYをfloat型にすることで解決しました。
double型のほうが精度が良くて速度が速いそうですが、プレイヤーくらいならまったく問題ないかと勝手に思っています。
角度を求めるときとかに使うのでしょうね、多分。
というわけで解決にしておきます。
if(CheckStatePad(configpad.left) >0) player.x -= X;
if(player.x <FIELD_MIN_X) player.x = FIELD_MIN_X;
if(CheckStatePad(configpad.right) >0)player.x += X;
if(player.x >FIELD_MAX_X) player.x = FIELD_MAX_X;
if(CheckStatePad(configpad.up) >0) player.y -= Y;
if(player.y <FIELD_MIN_Y) player.y = FIELD_MIN_Y;
if(CheckStatePad(configpad.down) >0) player.y += Y;
if(player.y >FIELD_MAX_Y) player.y = FIELD_MAX_Y;
もう動けばそれでいいかと思います。
DrawRotaGraphFのエラーは、この俗に言う加速度の変数、XとYをfloat型にすることで解決しました。
double型のほうが精度が良くて速度が速いそうですが、プレイヤーくらいならまったく問題ないかと勝手に思っています。
角度を求めるときとかに使うのでしょうね、多分。
というわけで解決にしておきます。