トピック
bはかせ kojimadaiti

SPHITSP

やっとキャラクターが操作できるように なって、次は当たり判定だと思い SPHITSPでできるかなと 試してみましたがなかなか反応してくれず。 SPHITSPの使い方を教えてください。
3そうだね
プレイ済み
返信[1]
親投稿
bはかせ kojimadaiti
どうも画像に載せたプログラムでは 判定していない、となってしまうんですよね。
0そうだね
プレイ済み
返信[2]
親投稿
Soybeanman 2013niconico
SPCOLを事前に使ってますか? 画像のように使わないと判定しませんよ。
3そうだね
プレイ済み
返信[3]
親投稿
FOR I=0 TO 511 IF SPUSED(I) THEN SPCOL I NEXT お手軽オールSPCOL
4そうだね
プレイ済み
返信[4]
親投稿
bはかせ kojimadaiti
説明ありがとうございます。 命令の説明に 「SPCOLを呼び出しておくこと」 とあったので 適当に SPCOL 1 とかしてたのが 原因でしたか… ちゃんと反応したので良かったです。 次は進めないようにする処理です…
2そうだね
プレイ済み
返信[5]
親投稿
bはかせ kojimadaiti
ただいま進めなくする処理に苦戦中です。 相手スプライトと重なったらそのフラグが 立って、フラグが立っている間は BGとスプライトが動かない (=実質移動していない) という風にしてみたんです。 すると、スプライトと当たった時に それ以上進まなくはなったんですが、 フラグが立ったままなので 戻ろうにも戻れません。 何か方法はありませんでしょうか?
0そうだね
プレイ済み
返信[6]
親投稿
bはかせ kojimadaiti
対象のスプライトから見て、 指定したスプライトが何度の位置に 存在するのか、を取得できる命令が 欲しいのです。 それがあればいろいろ解決する気が するのです。
0そうだね
プレイ済み
返信[7]
親投稿
ぴくと kanau1203
それならspofsで座標取得してatanから2点間の角度求めればおけ 補足 別にsphitsp使わないで座標からどうにかするという手もある
0そうだね
プレイ済み
返信[8]
親投稿
ぶつかったときにフラグを立てても動けなくなるので、ぶつかったら戻すようにしないとダメかと…。 BGの場合はぶつかる前に移動先を調べて動かない方法もありますが、SPHITSPの場合はぶつかったときの処理になりますしね。 とりあえず簡単な方法は、移動前の座標(一つ前の位置)も保存しておいて、SPHITSPでぶつかったときは、その前の座標に戻すようにする感じかなぁ? ただこのやり方だと複数のスプライトが同時にぶつかったり相手のスプライトも移動していたりすると厄介かもしれませんが…。
1そうだね
プレイ済み
返信[9]
親投稿
Soybeanman 2013niconico
ATAN(0からのY座標,0からのX座標) で角度が得られます。
0そうだね
プレイ済み
返信[10]
親投稿
bはかせ kojimadaiti
久々の作業です。 こう…なんで… 「当たったらそのひとつ前の座標に  戻す」っていう 簡単そうな事ができないんですかねぇ… いろいろ試し、 当たると前の座標に戻す まで できたかと思いきや もう一度当たると動かなくなりました。 時々反応する当たり判定なんていらない…! お助けください。 公開キー:4KE42393
0そうだね
プレイ済み
返信[11]
親投稿
Soybeanman 2013niconico
x,y操作する前に、old_x,yにx,yを保存したらどうですか?
2そうだね
プレイ済み
返信[12]
親投稿
即席なので微妙なところも残ってますが、ちょっとだけいじってみたのでアップします。プログラムだけなので画像は自分のものを使ってください(PRVECKNV) キャラが中央固定なので本当はX,Y座標を中央の位置として直接BX,BYを求めた方がいいんですが、とりあえずそのままの形にしています。 またSPDEFを少し変えました。SPDEFはアニメーション分用意した方がメインのプログラムが楽になるのでそうしました。 ([0,1,2,1]の繰り返しじゃなくて[0,1,2,3]の繰り返しで済むように) それに伴ってアニメーションカウンタの処理も少しいじりました。 この形にこだわる必要はありません(配列などで順番を入れる方法もある)が、とりあえずIFでのアニメーション管理が煩雑だったので変えた感じです。 まあメインは衝突の部分なのでそこのイメージだけ見れればいいかなぐらいで…。
1そうだね
プレイ済み
返信[13]
親投稿
bはかせ kojimadaiti
あ…当たり判定が機能している…! プログラム見てみました。 soybeanman さんのコメントにもあった BX,BYを別の変数に記録 当たっていたらその座標に戻す と、すごく簡単なプログラムでした。 自分のプログラムを見てみると、 どうやら自分はかなりトリッキーな 方法で挑戦していたみたいでした。 皆さんにヒントやサンプルなど頂き ひとつ進みました。 ありがとうございます。
1そうだね
プレイ済み