投稿
ひろきち henahenachoco
質問です。 このプログラムで、スティックを回して下を通るときに、スプライトがぐるーっと逆方向に回ってしまうのをどうにかしたいのですが、何か良い方法はありますか?
1そうだね
プレイ済み
返信[1]
親投稿
ひろきち henahenachoco
あ!消し忘れていたんですが、表示位置は変えないので、XとYやSPOFS等の座標関連は無視していただいてかまいません。
0そうだね
プレイ済み
返信[2]
親投稿
角度の範囲は、 -180<角度<=180 のようです。想定通りでしようか。
0そうだね
プレイ済み
返信[3]
親投稿
Tome3 kiiroimimisen
全部値を表示させてみてみました。 ROTがぐりーんと同じように戻ったり行ったりしてるので、原因は9行目と10行目のIF文ですね。どうしても必要ならVSYNCの係るループから外して回してはいかがでしょうか。 13行目のROTをSTCに変えると普通にくるくる回りますので。
0そうだね
プレイ済み
返信[4]
親投稿
ひろきち henahenachoco
コータさん ありがとうございます。 それ自体は想定通りなのですが、-180と180を通るときにぐりーんとならないようにしたいのです。 とめ3さん ありがとうございます。 スティックを入力した方向にだんだん向いていく、と言うようにしたいので、それだとやりたい動きとは違うのです。
0そうだね
プレイ済み
返信[5]
親投稿
とめ3さんのおっしゃるように13行目のROTをSTCに変えるだけで操作に追随します。なにか別の意図あるのでしょうか?
0そうだね
プレイ済み
返信[6]
親投稿
右回りと左回りとで、近いか遠いかを判断できる必要ですね。
1そうだね
プレイ済み
返信[7]
親投稿
STC-ROTを-360>-180>0>180>360の4つの区分に分ければ、判定できるのでは?
0そうだね
プレイ済み
返信[8]
親投稿
もやしもどき Pseudomoyashi
こんな感じでどうでしょうか?
2そうだね
プレイ済み
返信[9]
親投稿
ひろきち henahenachoco
コータさん いろいろと、ありがとうございます! 大切な時間をお取りしてしまってすいません! もやしもどきさん 出来ました! 理論的には、なんとなーく、漠然と、もやーっとは、わかっていたんですが、プログラム上での実現に至っておりませんでした。 ありがとうございます!
1そうだね
プレイ済み
返信[10]
親投稿
いえいえ、考えることは楽しいことです。
1そうだね
プレイ済み
返信[11]
親投稿
もやしもどき Pseudomoyashi
解決したようで何よりですが、後から見て自分のコードがいまいちに感じた(変数Dの扱いが気持ち悪い)ので一言補足というか別案を。 こんな感じに与えられた角度を-180~+180の範囲に変換する関数を用意して、 DEF NORMANG(A) WHILE A<-180:A=A+360:WEND WHILE A> 180:A=A-360:WEND RETURN A END -180~+180の範囲を超える可能性がある角度の値(ROTの値やSTCとROTの差など)はこの関数を通して、その結果を判定するようにした方が綺麗だし汎用性がある(例えば差の大きさで回転速度が変動するようにしたり)かなとも思います。
0そうだね
プレイ済み
返信[12]
親投稿
ひろきち henahenachoco
もやしもどきさん 関数化ですか!なるほど! これはスッキリしますね!ありがとうございます!
0そうだね
プレイ済み