HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0117
カリレオhsp dxfix スプライトについて10解決


カリレオ

リンク

2012/1/17(Tue) 17:34:45|NO.44360

HSPdxfixについて質問させてください
場違いだったらすみません


最近HSPdxfixを知り、使って簡単なゲームを作っているのですが、スプライトがイマイチ理解出来ないので質問させてください

.好廛薀ぅ犯峭罎麓機など一つしか存在しないものは普通に番号を指定して、弾など複数存在するときにはes_newを使うのですか?


画面外からでたスプライトはクリアできないのですか?もしできないならスプライト番号の空きがなくなってしまい画像が表示できなくなると思うんですがどうすればいいですか?



この記事に返信する


てれてれ

リンク

2012/1/17(Tue) 18:20:07|NO.44362

ー分自身で管理が出来るのであれば、別段es_newを使う必要性は無いかと思います。
es_killという命令があります。調べてみてください。



カリレオ

リンク

2012/1/17(Tue) 19:07:16|NO.44363

>>てれてれさん
STGなど画面上に大量の弾が出る場合、es_newを使わないと弾が1〜2発しか出せないんですが対処法はありますか?

es_killありがとうございます。

 画面外に出た弾のスプライトを初期化して繰り返し使用したいんですけどまったくやり方がうかびません・・・
 何かいい方法ないでしょうか?



てれてれ

リンク

2012/1/17(Tue) 19:47:05|NO.44366

>STGなど画面上に大量の弾が出る場合、es_newを使わないと弾が1〜2発しか出せないんですが対処法はありますか?
弾の数だけ配列変数を確保して、
それぞれの配列に対応するスプライトIDが使用されているかどうかチェックすることで対処出来るかと思います。

しかし現状で動作に問題が無いのであればわざわざ手法を変える必要など無いのでは?

また、現バージョンではes_newでなくes_exnewを使うようにしてください。
検索を終了するスプライトIDを指定しないと場合によっては処理速度が大幅に遅くなることもあります。


>画面外に出た弾のスプライトを初期化して繰り返し使用したいんですけどまったくやり方がうかびません・・・
es_getなどを用いて単純にそれぞれの弾の座標をチェックして、
画面外から弾が出ていたら消せばいいだけです。

他の方法としては、弾が画面外にフェードアウトするまでのフレーム数を距離から計算して、
es_blinkの点滅フラグの[1]を用いて、画面外から出るタイミングでスプライトを自動で削除させることも可能かと。



カリレオ

リンク

2012/1/17(Tue) 20:29:39|NO.44367

>>てれてれさん
現在のままだと、スプライト数が足りなくなり球切れをおこしてしまいます

>>弾の数だけ配列変数を確保して、
>>それぞれの配列に対応するスプライトIDが使用されているかどうかチェックすることで対処出来るかと思います
すみません。弾の移動等の処理で配列変数は使っていなかったのでいまいちやり方がわかりません・・・
>>es_getなどを用いて単純にそれぞれの弾の座標をチェックして、
>>画面外から弾が出ていたら消せばいいだけです。

このようなスクリプトを書いてみましたがうまくいきません

es_get jx,sp,3 es_get jy,sp,5 if jx<-30.0 || jy<-10.0 || jx>480.0 || jy>600.0:es_kill sp

知恵足らずですみません



てれてれ

リンク

2012/1/17(Tue) 20:47:30|NO.44368

>現在のままだと、スプライト数が足りなくなり球切れをおこしてしまいます
es_iniのパラメータを変更すればスプライトの最大数を変更出来ます。



カリレオ

リンク

2012/1/17(Tue) 21:03:06|NO.44369

>>てれてれさん
es_iniでスプライトの最大数を変更できるのは知っていますが、スプライトに限りがあるとゲームをしていてスプライト切れするかもしれないので
画面外にでたスプライトを初期化して何度も使えるようにしたいのです



暇人

リンク

2012/1/17(Tue) 22:28:19|NO.44371

es_findで弾に使ってるスプライトNOを全て取り出して画面外判定してるなら
NO.44367でのes_killの使い方は特に間違いは無い

って言うか、hspdxは何もしなくても画面外に出たのは自動で削除される
es_area で後から範囲指定もできる(es_flagで消えないようにも設定できる)

もし画面から弾が消えても次の球が出せないなら
消えてないとか関係無しに他の問題がある可能性が高い

es_findでスプライトが何枚使用中か常に表示してみれば
消えてるのに出せないのか
消えてないから出せないのか分かる



カリレオ

リンク

2012/1/18(Wed) 00:14:23|NO.44372

>>hspdxは何もしなくても画面外に出たのは自動で削除される
削除されたスプライトはまた使えるんですよね?



暇人

リンク

2012/1/18(Wed) 00:33:57|NO.44373

>削除されたスプライトはまた使えるんですよね?
当然だろう


spno=0 spcnt=0 repeat es_find spno,0,spno if spno<0 {break} spcnt+ spno+ loop
メインループにこれ追加して
spcntを表示させて使用中のスプライト数見てみればいい



カリレオ

リンク

2012/1/18(Wed) 00:42:20|NO.44375

>>暇人さん
ありがとうございました!!無事スプライトは削除されてました!
本当に感謝します
またの機会によろしくお願いします!



ONION software Copyright 1997-2021(c) All rights reserved.