トピック

質問です。

スライドパッドでスプライトを移動させるプログラムを作ったのですが、これだともの凄いスピードで移動してしまうし、画面外にもでてしまうし、設定した、移動できる範囲の端にぶつかると跳ねるように弾かれてしまうのですが、どうすればよいのでしょうか? ちなみに、移動できる範囲は、上下だけスプライト一個分(自分の前の投稿のコメントを見ていただければわかると思います。)の障害物があるので そこで止まるようになるように教えて頂けるとありがたいです。
1そうだね
プレイ済み
返信[1]
親投稿
natto- natto-3030
速くなるのは移動処理の真ん中位にVSYNCをやればOK。
2そうだね
プレイ済み
返信[2]
親投稿
*10とか*-10って書いてあるけど、言い換えればわざわざ「10倍速」にしてるんだよね。 だから、数字を小さくすれば遅くなるよ。 37行目からIF文が4つ書いてあるけど「画面から出さない」という動きになっていない。 だから画面から出ちゃうと思う。 あと、VSYNCっていう命令は使ってますか?
1そうだね
プレイ済み
返信[3]
親投稿
ケイン KEIN.HORGAN
ざっとみた感じ、跳ね返る理由は、 IF X>=45 THEN SX=SX-1 等の式にありそうですが…… これ、何を意図してるんでしょうか? 単純に移動させたくないなら、SX=0 とかにすれば良さそうなものなんですが。
2そうだね
プレイ済み
返信[4]
親投稿
Hanzo rzsense
画面外に出たりしないようにするには 1. 36~43行目の4つのIF文を消す。 2.48行目のSPOFSの直前に、次の2行を追加する。 X=X*(X>0 && X<45)+45*(X>=45) Y=Y*(Y>10 && Y<25)+10*(Y<=10)+25*(Y>=25)
1そうだね
プレイ済み
返信[5]
親投稿
本当は IF X>45 THEN X=45 みたいな感じでいいと思う。 あと、このIF文はX=X+SXの下に書くこと。 Yも同じやり方です。
0そうだね
プレイ済み
返信[6]
親投稿
うーむ… ちょっとよく分からないので逆に聞きますが、このプログラムで、十字キー操作と同じ条件(範囲、スピードなど)でスライドパットでも操作出来るようにするにはどうすればよいのでしょうか?
0そうだね
プレイ済み
返信[7]
親投稿
Hanzo rzsense
ズバリ、添付のとおりです。 STICK OUTは2つの値を返しますが、どちらも値域は-1.0から1.0までの実数であり、絶対値はスライドパッドのスライド量、符号はスライド方向を表します。スライド量がある一定以上のとき、スライド方向に応じて十字ボタン押しと同じ処理を実行すればよいのです。
2そうだね
プレイ済み
返信[8]
親投稿
面倒なことは考えずにSTICKをBUTTON()に変換するのもアリ
1そうだね
プレイ済み
返信[9]
親投稿
むむむ~~~………!! 何かこのプログラムに追加するだけで動かせるようにするにはどうすればよいのでしょうか?
0そうだね
プレイ済み
返信[10]
親投稿
Hanzo rzsense
何か追加することでスライドパッドを動かせるようにするには、あまさと しおんさん方式(STICK OUTの応答をBUTTON()の応答に差し替える)が適切と思います。 具体的には、次の2行を、10行目の「B=BUTTON()」の直後に挿入してください。 STICK OUT STX,STY B=(B OR(#UP*(STY>0.3))OR(#DOWN*(STY<-0.3))OR(#LEFT*(STX<-0.3))OR(#RIGHT*(STX>0.3)))
1そうだね
プレイ済み
返信[11]
親投稿
ありがとうございました! おかげさまで動くようになりました!
1そうだね
プレイ済み