トピック

BGの扉とSPの主人公がぶつかっていて かつ Aボタンを押すと外に出るプログラムが難しいです

タイトルわかりづらくてごめんなさい。 画像のようにプログラムをかくと扉をすり抜けます。 他の解決方法があると思い、1ヵ月ずっと考えましたがまだ解決方法が見つかりませんでした。 なのでどうすればこの問題を解決できるかを教えてくれればうれしいです。 もし、タイトルと本題がわかりづらかったらごめんなさい。
2そうだね
プレイ済み
返信[1]
親投稿
あきと SideBurnsM
多分主人公と扉が隣あっている時にAボタンを押したらマップを切り替えたいという事だと思いますが、それなら主人公の座標から上下左右16ドットずらした座標にドアがあるか判定しないといけないかと。 今はドアと主人公が重なっているときに切り替わるする処理になっていると思います。 上下左右4回BGGETを呼んで扉があるか判定して、どれか一つでも扉があるならその時にAボタンを押したらマップ切り替え呼び出しですかね。 私なら上下左右の判定を関数にします。
2そうだね
プレイ済み
返信[2]
親投稿
何度もすいません。 先ほどその判定の関数を作ろうと思い、いろいろ頑張ってみましたがうまくできませんでした。 あの、もしかしたら失礼かもしれませんが、もし可能だったらその判定を行うための関数のソースコードを教えてくれませんか? (思い切って行ってみる。)
0そうだね
プレイ済み
返信[3]
親投稿
訂正。行ってみるではなく言ってみるです
0そうだね
プレイ済み
返信[4]
親投稿
あきと SideBurnsM
下の関数を入力してCheckUDLR(x,y,3,351)でいいかと '(x,y)で渡した上下左右16ドット隣にBGPARTSがあるかチェックする 'BGPARTSが無かったら0 見つけたら1以上 DEF CheckUDLR( x,y, BGNO, BGPARTS ) VAR FLAG=0 IF BGGET( BGNO, x,y-16, 1)==BGPARTS THEN INC FLAG '上チェック IF BGGET( BGNO, x,y+16, 1)==BGPARTS THEN INC FLAG '下 IF BGGET( BGNO, x-16,y, 1)==BGPARTS THEN INC FLAG '左 IF BGGET( BGNO, x+16,y, 1)==BGPARTS THEN INC FLAG '右 RETURN FLAG END
0そうだね
プレイ済み
返信[5]
親投稿
あきと SideBurnsM
補足ですがドアに隣接しているかキチンと確認しながら書いた方がいいですよ。作っている途中はプリントして確認しながら作るのが重要です。 doorflag = CheckUDLR(x,y,3,351) LOCATE 0,0:? doorflag IF doorflag>0 && BUTTON(2) AND 16 THEN ・・・ ENDIF
1そうだね
プレイ済み
返信[6]
親投稿
前にキャラクター歩行とAボタン押したときのイベントを試しに作ったことがあったので そのソースの一部を貼ってみました 十字ボタンの入力があった時にキャラがどの向きになったかをSPVARに確保し 歩行チェックやイベントチェックに使っています 今いる座標をマップ用の座標で取得して 向きによってその座標X、Yの値を調整して DATAでまとめたイベントと付き合わせてます もし、このサンプルプログラムを見てみたい場合はアップしますので おっしゃってください
2そうだね
プレイ済み
返信[7]
親投稿
あきとさん りゅうまごさん コメントありがとうございます。 りゅうまごさん。コメントありがとうございます。さんぷるプログラム見てみたいです。勉強にもなりそう! あきとさん。コメントありがとうございます。 printして確認するのは重要ということは初めて知りました。ありがとうございます。
1そうだね
プレイ済み
返信[8]
親投稿
普段、ツールばっかり作っててゲームらしいゲーム作ってないので 作り慣れた人と比べてどうかというのはわかりません 参考に出来そうなところだけ参考にしてくださいね(^^) 公開キー【J3284JZ6】
1そうだね
プレイ済み
返信[9]
親投稿
リュウまごさんへ プログラムありがとうございました。 あきとさんとりゅうまごさんの協力で解決できました!ありがとうございました! この辺でこのトピックを閉めます。 ありがとうございました
1そうだね
プレイ済み