投稿
おちゃめ ochame_nako
スライドパッドを十字ボタンの代わりに使えるDSTICK関数を作りました。BUTTON関数と同じ値を返します。
13そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
短いプログラムですが、これでBUTTON関数と同様に上ならば1、右ならば8、右上ならば9を返してくれます。 スティックには遊びを設けているので最大稼働域の半分以上動作させることでその向きを取得が可能になっています。 BUTTON()関数と併用して使う場合には B=DSTICK() OR BUTTON() とすれば良いです。 なお、シンプルにするため十字ボタンとスライドパッドの両方を同時に押した場合やBUTTON(2)に相当するスライドパッドを押した瞬間の取得には対応していないので頑張って対応させてください。 この関数は改造したり自作プログラムに自由に組み込んでOKです。
0そうだね
プレイ済み
返信[2]
親投稿
☆TAKA☆ ParasolWaddleDee
自分も同様の関数を作っているのですが、まさかこんなにコンパクトにできるなんて驚きです!
0そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
☆TAKA☆さんの投稿を見て十字ボタンの置き換えならばもっと簡単にできそうと思ったので即興で作ったものなので大したものではないです。 簡単に原理を説明するとATANで押した角度が分かるので382.5を足して(360ではなくそれより22.5多いのは押した方向の±22.5度の範囲を押した向きにするため)MOD 360とすることで0~359の値になりそれを45で割ることで0~7(下記の置き換えで小数部は無視される)の値が取得できます。 SX*SX+SY*SY>0.2で約半分動かしたことが分かり、上記の0~7の値が入ったAをVAL("78043519"[A])+1に当てはめることで十字ボタンと同じ値に変換します。
0そうだね
プレイ済み
返信[4]
親投稿
僕も作ったことはありますが、おちゃめさんのを応用(というほどでもない?)すればスティックの向きからキャラクターの方向(向き)を求められるので、スティックで自由に動く場合でも役に立つと思いますよ。
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
でんぺんさんへ 十字ボタンの置き換えでなくてもスライドパッドで8方向移動するならば今回作ったプログラムを元に簡単に作れますね。
0そうだね
プレイ済み
返信[6]
親投稿
そうですね〜。それに8方向に限定しないで自由に移動させる場合でも、例えばキャラクター(絵)の向きは上下左右の4種類とか、斜めを書いても8方向とかの場合もあるので、そんなときも役に立つと思いました。(飛行機や車などで上方向からの絵で回転する場合は自由な角度で出来ますが) なので初心者の方はとくにこういうのを計算でやるのは慣れてないと思うので、とても役に立つと思います。
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
でんぺんさんへ このようなプログラムは作り慣れていれば即興で簡単に書けるレベルなのですが、初心者だと難しいかもしれませんね。 仮に角度はATANで計算できるというのが分かっても8方向の場合だと基準方向に対して±22.5度の範囲で数値を丸めないと不自然になるし4方向だと±45度の範囲で行う必要があります。この丸め方は慣れないとどうやっていいのかなかなか分からないと思います。
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
というわけで、初心者向けのメモ ◎スライドパッドで8方向(0~7)を取得する方法 FLOOR((DEG(ATAN(SY,SX))+382.5)MOD 360/45) ◎スライドパッドで4方向(0~3)を取得する方法 FLOOR((DEG(ATAN(SY,SX))+405)MOD 360/90) ※SX、SYにSTICK OUTで取得したX、Y方向の値が入っている場合  値は0が右方向で反時計回りに1、2、3、・・・となっている。
1そうだね
プレイ済み