投稿
ドララ dorara13579
SPキャラクタを十字キーで四方に動かしたいのですが、 中々上手くいきません。 どうしたら動くでしょうか?
1そうだね
プレイ済み
返信[1]
親投稿
Mez mituaki584
ビット演算ならスムースにボタン入力ができます IF BUTTON() AND 1 と、ANDを使えば一見落着! 仕組みが知りたくばwebで「ビット演算」を検索するのだ
0そうだね
プレイ済み
返信[2]
親投稿
ドララ dorara13579
ANDですか、分かりました! ありがとうございます! にしても、ここでビット演算がでてくるんですね…覚えておいてよかった!
0そうだね
プレイ済み
返信[3]
親投稿
ドララ dorara13579
あれ、でもどういう風に入力すれば良いんでしょうか?
0そうだね
プレイ済み
返信[4]
親投稿
Mez mituaki584
13~16行の「==」を書き換えればいいと思うよ
0そうだね
プレイ済み
返信[5]
親投稿
ドララ dorara13579
いえ、そうじゃなくて、ANDに置き換えただけでは先程のプログラムと同じ動きになってしまうんです。 理想としては、十字上キーを押したら、上に動くようなプログラムにしたいんです。今は上キーを押したら上を向き、足踏みする状態です。
0そうだね
プレイ済み
返信[6]
親投稿
ゆうたん yu-tan-sama
これ、ビット演算とかが原因じゃないよね まず、BUTTON(2)を指定してるから押された瞬間しか反応しない SPANIMの方向を決めるだけならとりあえずこれでいいけど… 次、そもそもループの中でスプライトの座標を変えてない なのでX座標やY座標をいじってSPOFSで場所を移動させましょう
0そうだね
プレイ済み
返信[7]
親投稿
Mez mituaki584
それならば BUTTON(0)にて上を押したら上へ、右を押したら右へ...といったプログラムを追加すれヴぁいい話ですな (スプライトの座標移動命令であるSPOFSを使ってその結果を反映する)
0そうだね
プレイ済み
返信[8]
親投稿
Mez mituaki584
例を挙げるならば B=BUTTON(0) IF B AND 1 THEN DEC Y IF B AND 2 THEN  INC Y IF B AND 4 THEN DEC X IF B AND 8 THEN  INC X SPOFS 0,X,Y
0そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
本筋とは関係ない話ですが、ビット演算を使って普通に判定をすると4方向ではなく8方向移動になってしまいます。
1そうだね
プレイ済み
返信[10]
親投稿
ドララ dorara13579
う~ん、動きませんね…XとYが座標ではなく、変数として扱われているんでしょうか? でも試しにPRINTしてみたところ、どれも無反応(0)なんですよね…
0そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
X、Yの値を変えてもWHILE~WENDのメインループ内にSPOFS 1,X,Yを入れないと動きません。
0そうだね
プレイ済み
返信[12]
親投稿
ドララ dorara13579
メインループ内にSPOFSを入れても動きませんでした。 何か根本的な原因があるのでしょうか?
0そうだね
プレイ済み
返信[13]
親投稿
ツララ LongIceSword
XとYの値を操作する命令もループ内に入れないと反映されませんよ。 WHILEをLOCATの上に移動させてやらないと。
0そうだね
プレイ済み