投稿
nobu divine-creator
画面上の文字やSP&BG&GPUTCHRなどをまとめて消したい(切り替えたい)時には、どのようにするのが一番良いと思われますか? プログラムを置換したいわけではなく、表示上の話です! 文字→CLSで消す SP→SPHIDEで隠したり、SPCLRで消去する BG→別のBGをLOADする GPUTCHR→GCLSで消す …というように、個別に消すのがよいのでしょうか? それとも、ACLSで一気にまとめて消してしまうほうが良いのでしょうか?
0そうだね
プレイ済み
返信[1]
親投稿
れい rei-nntnd
ACLSは結構遅いしSP面とかだと消えるんじゃなくて元のSPでちゃうんで最初に1回ってのがよくやる手かと 個別に消しても細かに対応できるんでそんなに問題はないし、一つの作品の中ならBGもSPも使うレイヤのは決まってることが多いんで、それだけ消すDEF作るってのもありだと。 あとでフェードアウトに変更したりとか簡単になる。 でもまぁ気にせずガンガン作った方がいいと思うよ あんまり汚くて進まなくなったら自分で治したくなるし 進まなくならないならどんな方法でも問題ないし。
1そうだね
プレイ済み
返信[2]
親投稿
こうやま kouyama1967
 私の作品では、こうしてます。 SP→ @S_LOST_ALL 'SPRITE ケス ゼンブ FOR S=0 TO 最大番号:S_LOST S:NEXT RETURN DEF S_LOST LS 'SPRITE ケス SPOFS LS,画面外座標,画面外座標 END BG→「BGCLR」または「BGCLR 番号」
2そうだね
プレイ済み
返信[3]
親投稿
nobu divine-creator
回答ありがとうございます♪ やはり熟練者になると、必要な操作は自分で定義して創り出すというのが、当たり前になるのでしょうか…?! 基本操作を充分に把握できていないため、最初はACLSでまとめて消すという方法を使っていました。 その後、個別に消す方法を知り、そのほうが良いかと変更してみましたが、GCLSで画面を消すと、最初に使ったBACKCOLORが画面の両端に見えたり、画面が切り替わる時に色が一瞬見えたりと、ACLSで消していた時よりも遅く、不具合が目立つ結果になってしまいました…。 とりあえず、個別に消す方法を研究して、上手くいかなかったら、最初の方法に戻すことになるかもしれません…。
1そうだね
プレイ済み
返信[4]
親投稿
ナツキ natukin1978
VISIBLE命令で一時的に非表示にするってのもありますが…… nobuさんが実現させたい事とは違うっぽい。
0そうだね
プレイ済み
返信[5]
親投稿
nobu divine-creator
VISIBLEで非表示にするというのは、どのような場合に使うのでしょうか? 今回の場合は、非表示にしたいというわけではありませんが、そのような命令が存在するということは、何らかの需要があるからですよね?
0そうだね
プレイ済み
返信[6]
親投稿
こうやま kouyama1967
 VISIBLEは元々初代プチコンで、どれとどれを表示させるかという目的で設定されていました。  しかし他のプログラムを実行後、それでもBGなど消えない画面要素が多く残り、初代でもっとも懸案の一つとされたので、mkIIでACLSが登場しました。  3号でも東京ゲームショウの試作バージョンではACLSが無かったのですが、来場者の多くがあるものと思い込んで結構混乱し、初回発売バージョンからやはりACLSが実装されました。  ACLSはその通り全体リセットなので、プログラムの最初と、終了時の最後だけでいいと思います。
1そうだね
プレイ済み
返信[7]
親投稿
nobu divine-creator
…ということは、VISIBLEを使用している人って、ほとんどいらっしゃらないのでしょうか…? それと、ACLSを多用しないほうが良いのでしょうか?消したい表示の種類を問わず、まとめて消せるのが便利な気がしてしまうのですけど…。
0そうだね
プレイ済み
返信[8]
親投稿
こうやま kouyama1967
 ACLSはグラフィックページ(スプライトやBGのキャラ定義)が初期化され、スプライトのSPSETも全て解除されてしまいます。  テキストや簡単なグラフィック表示だけのプログラムなら、ACLSを使うこと自体は問題ありません。ただ3号のACLSは、実行するのにちょっと時間がかかります。
0そうだね
プレイ済み
返信[9]
親投稿
nobu divine-creator
れいさんは、ACLSが結構遅いと仰り、 こうやまさんも、実行するのにちょっと時間がかかると仰る。 私が使用した印象では、特に遅いとは感じられなかったのですが、恐らく速さを気にしなくても良いプログラムのせいなのでしょう…。 高速で素早く切り替わらなければならないプログラムでは、処理が遅いとなってしまうのでしょうね。
0そうだね
プレイ済み
返信[10]
親投稿
けい kei0baisoku
ACLSの方が勝手に色々やってしまうし、確かに遅いので、その2択なら私も個別に消す方をオススメします。 ACLSの方が早かったようでしたら、なにか別の原因だと思われます。 とは言え、ACLSで済むなら手軽でいいと言うのもその通りなので、例えば↓のようなDEFを自分で作ってそれを使い、もし後で変えたくなったらDEFの中だけ書き換えるとかが、融通が利いていいかもしれません。 DEF MYACLS ACLS END
3そうだね
プレイ済み
返信[11]
親投稿
nobu divine-creator
DEF MYACLSを使った場合と普通にACLSを使った場合の違いが、よく分からなかったのですが、DEF MYACLSを使った場合には、変更する時にラクになるということですか? 変更しない場合の状態は、どちらも同じ結果になるわけですよね?! もしかして、個別に消す命令を一塊にして定義することで、1つの命令だけで複数の処理をまとめて実行できるようになる分だけラクになるということですか?
2そうだね
プレイ済み
返信[12]
親投稿
ACLSは遅いのと初期化し過ぎるのが問題にはなりますが、それが許容出来る内容ならとりあえず使うのはありがと思います。 ただ通常は始めや最後に使うケースが多いとは思いますね〜。
1そうだね
プレイ済み
返信[13]
親投稿
けい kei0baisoku
>nobuさん はい、全くその通りです。 後になって「実はACLSだと都合が悪かった」となる可能性も高いですが、そうなってもDEFにまとめていれば1ヶ所の変更で済むので安心、という意図です。 そして、ACLSでよくても複数命令を組み合わせる事になっても、使う側は気にせずいつも「MYACLS」とだけ書けばいいので楽です。
2そうだね
プレイ済み
返信[14]
親投稿
こうやま kouyama1967
 高級言語の命令は一般に ・最初の一回だけ定義すればいい初期設定命令 ・プログラム中で何度も使う汎用命令  の二種類という概念があります。ACLSは前者です。  nobuさんはその辺をしっかりくみ取れていない(真意を理解していない)ようなので、何が何でもそれだけが正しい!という押し付けこそしませんが、まずその概念でそのまま暗記されてもよろしいと思います。  どんな時にどんな命令がいいかという選択テクニックは、プログラム作りを重ねていけば、イヤでも自然に脳にたまって行きます。
0そうだね
プレイ済み
返信[15]
親投稿
nobu divine-creator
ACLSを最後に使う理由は、プログラムが終了した後に、そのままプログラムが残っていると邪魔になるからでしょうか? NEWで消すより、終了時に消してしまったほうが良いということで合っていますか?
0そうだね
プレイ済み
返信[16]
親投稿
れい rei-nntnd
ACLSはプログラムを消すわけじゃない 画面まわりの初期化。 例えば最前面にスプライトを表示したりするようなプログラムで、終了時にそのまま残ってたら何も見えなくなっちゃうでしょ ACLSを手で入力したらいいけど、何も見えないので入れるの大変。 あらかじめ消しておくのが親切だよねって話。
0そうだね
プレイ済み
返信[17]
親投稿
nobu divine-creator
基本的に、プチコンのプログラムは、ENDで自動的に終了するか、タイトル画面に戻るため、STARTボタンを押して終了させるかの2通りだと思うのですが、最後にACLSが使われていないと困る作品というのを存じません…。 「最前面にスプライトを表示するプログラムで、最後にACLSで消しているプログラム」の良い例となる作品をご存知ですか?
0そうだね
プレイ済み
返信[18]
親投稿
nobu divine-creator
こうやまさんの仰る高級言語の分類は、以前に「初心者が躓く原因の1つ」と、けいさんが仰っていた問題と関わるお話ですね! どの命令が、「どの程度の範囲まで有効であるか?」ということを、正しく把握できていないのですけど、それらの情報はどのようにして学ばれたのでしょうか? とりあえず、「最初の一回だけ定義すれば良い初期設定命令」がどれであるか分かれば、それ以外は汎用命令と判断できるということですね♪
0そうだね
プレイ済み
返信[19]
親投稿
れい rei-nntnd
完成してるものはしらない こないだ作ってたレースゲームなんかでテストプレイしてた時は最前面にスプライトでてうざいから 最後にACLS読んでから終わるように作ってたね。 公開するときに、プログラムが終了しないように変更したからACLSは消したけど。
0そうだね
プレイ済み
返信[20]
親投稿
nobu divine-creator
あれ?予め消しておくのが親切…というのは、他人に向けてのお話じゃなかったのですか? 自分でプログラムを作っている途中で、入力する文字が見えなくなるということなら、私も既に実感しています! それで、文字が見えなくならないように、表示する箇所の色を変えて見やすくするという方法を使っていたのですが、最後にACLSを使うというのは、作成途中のお話だったのですね。
0そうだね
プレイ済み
返信[21]
親投稿
れい rei-nntnd
いやいやいや 例として出しただけで作品次第だって あれは完成度高い風を見せかけるために終了しないようにしたからついでに消したけども。 ツール類とかちょっと実行するためのプログラムとか、 終了したあと続けてプログラムするような場合はACLSしといたほうが親切でしょ。 で、そういうの俺は使ってないから例をあげられなかっただけ。 ちょっと作品名すぐ出てこないけど、いくつかお絵かきツールなんかで終了ボタンついてるやつあったでしょ ああいう時最後にACLS読んでるかもしれんね
1そうだね
プレイ済み
返信[22]
親投稿
けい kei0baisoku
あれ、私何か高級言語がどうとかって話しましたっけ………(^^; ちゃんと覚えてなくて申し訳ないっす(´з`) 最後に呼ぶのは………確かにあまり需要無さそうですね(´ω`)
0そうだね
プレイ済み
返信[23]
親投稿
僕は最後には実は呼んでません…。まあでもテキストが見えなくなるようなら、それは解消させて終了してるかな…。適度な初期化を気分によってしてます。。。
0そうだね
プレイ済み
返信[24]
親投稿
nobu divine-creator
けいさんが仰ったのは、「高級言語が云々」という話ではなく、「各命令の有効範囲が、初心者には分からない」という話です!それで、初心者が「プログラムなんて分からん!と挫折することになる可能性がある」と、以前に仰っていたなぁと思い出したという話です。 実際に、SPDEFは最初にまとめて定義しても良いのでしょうか?(途中でリセットされなければ、まとめたほうが良さそうですけど…、現在はバラバラに配置されています…。) それと、SPDEFを使わずにSPSETだけでも同様のことが可能という説明を読みましたけど、SPDEFとSPSETの使い分けがよく分かっていません…。 何となく同時に並べて使っているのですが、正しく動いているから問題無いのか、きちんと使い分けるようにすべきか、迷っています…。
0そうだね
プレイ済み
返信[25]
親投稿
けい kei0baisoku
おおっ、何となく思い出しました。 これでしょうか? https://miiverse.nintendo.net/posts/AYMHAAACAAADVHiSvCJ5sw ACLSの話とはポイントは違うかも知れませんが、「経験によって勘所を掴む」というのは共通してるかも知れません。 SPDEFは、確かに最初にまとめておいた方がやり易そうなので、私ならそうします。(これも経験による勘に近いです) ここで重要なポイント! 何となくそんな気がしたので確かめたのですが、ACLSを呼ぶとSPDEFもリセットされて元に戻ります。 なので、ACLSを画面の掃除目的で頻繁に呼ぶと、スプライトを使う直前に毎回SPDEFが必要という制限が付いちゃいます。 ACLSは最初に一回だけがいいというのは、こういった副作用を避けるためもあります。
0そうだね
プレイ済み
返信[26]
親投稿
けい kei0baisoku
SPDEFとSPSETは………根本的に全く違う命令なので、似てるように感じてるという事は、どちらか役割を勘違いしてるかも知れません。 スプライトを「新しく使う(=表示する)」のがSPSETです。 スプライトを使いたかったら必須です。 この時、使う画像のUVや左右反転などを毎回細かく指定できますが、毎回細かく指定するのはメンドクサイです。 毎回同じなのだから、それをセットとして覚えさせておいて、使いたい時にそのセットを指定できたら便利です。 その便利なセットを覚えさせられる命令がSPDEFです。 はじめから便利なセットがいくつかは登録されていて、例えば「0番」はイチゴが用意されています。
0そうだね
プレイ済み
返信[27]
親投稿
nobu divine-creator
けいさんへ たぶん、勘違いではないと思います…。ヘルプやガイドブックに書かれている「SPSETの使い方」の一つに、「SPDEFと同様の処理になる書き方」というのがあって、私がコメントに書いたのは、その書き方をした場合の話です。 基本的には、けいさんの仰る通りの使い方になるわけですが、SPSETの使い方には複数あって、そこがややこしいです…。
0そうだね
プレイ済み
返信[28]
親投稿
正式には同様の処理ではないという罠…。
0そうだね
プレイ済み
返信[29]
親投稿
正式というか正確には、かな…。 SPSETの書き方はSPDEFをしなくても表示できるだけで、SPDEFと同じ処理になるわけではないのですよー…。
0そうだね
プレイ済み
返信[30]
親投稿
nobu divine-creator
でんぺんさんの仰る通りですね♪ SPDEF無しでもOKというだけで、SPDEFの代わりになるという話ではないです!なので、SPDEFを使っていますが、SPSETも細かく入力しています。そうしないと、何故かうまく表示できなかったので、無駄に多く入力している状態っぽいです…。
0そうだね
プレイ済み
返信[31]
親投稿
けい kei0baisoku
なるほど。 それですと「同様の処理になる」という言い方が少し語弊がありますね。 結果は同じになりますが機能が全く別物ですので、SPDEFと同様の処理ではないです。 両方で細かく数値を入れるのは、確かにどちらかは無駄なのが普通です。 きちんと調べる場合は、SPDEFを先にやればSPSETは定義番号の指定だけで済むはずですので、それでどこがうまくいかないかを追うのが調べやすいかな、と思います。
1そうだね
プレイ済み
返信[32]
親投稿
こうやま kouyama1967
 ここでちょっと、まとめてみましょう。 ■初代プチコン、プチコンmkII ・CHRSET - バンク(キャラデザイン定義)に、自作のデザインを書き込む。 ・SPSET - 特定のスプライト管理番号を活性化開始し、その管理番号に、特定のバンクの絵を入れる。必ず定義しなければいけない。 ・SPCHR - すでに活性化している特定のスプライト管理番号に、特定のバンクの絵を入れる。 ■プチコン3号 ・SPDEF - GRP(キャラデザイン)から、特定のSPDEF番号に、絵を転送する。 ・SPSET - 特定のスプライト管理番号を活性化開始し、その管理番号に、特定のSPDEF番号の絵を入れる。バージョン3.1からは必ず定義しなければいけない。 ・SPCHR - すでに活性化している特定のスプライト管理番号に、特定のSPDEF番号の絵を入れる。
0そうだね
プレイ済み
返信[33]
親投稿
nobu divine-creator
SPCHRという命令を一度も使用したことがなかったため、その存在も知りませんでした! この命令は、どのような場合に使うのでしょうか?
0そうだね
プレイ済み
返信[34]
親投稿
SPDEFを使っているのにSPSETで細かく指定しているというところでおそらくきちんと機能を理解してない気がしますねー…。 こうやまさんの説明のSPDEFで絵の転送というのはちょっと違うような気がします。(便宜的に言ってるのかもしれませんが) SPDEFでGRPから指定した範囲の画像をスプライトとして定義(この時に原点や反転などの付加情報も決められる)しておいて、SPSETではその定義番号を指定するだけで前もって準備してあったスプライトを表示出来るようにする、みたいな感じです。 SPSETはスプライトを初めて表示する時に利用して、それ以外でキャラクターを変更するときはSPCHRやSPANIMなどを使用する、というやり方が一般的なやり方ではないかと思います。
0そうだね
プレイ済み
返信[35]
親投稿
nobu divine-creator
SPCHRって、2回目以降にSPを使用する場合に使うのですか?SPHIDEで一旦隠して、SPSHOWで再び登場させたり、SPOFSで移動させたりするという方法を使っているのですが、SPCHRの使用法が分かりません…(?_?)。
1そうだね
プレイ済み
返信[36]
親投稿
SPCHRはSPを使用する時じゃなくてスプライトのキャラを変更したいときですよ〜。なのでSPSHOWでの表示やSPOFSでの位置変更などとは無関係です。
0そうだね
プレイ済み
返信[37]
親投稿
nobu divine-creator
もしかして、キャラの変更というのは、プレイヤーが操作するキャラを変更する場合とかですか?そういう時にSPCHRを使うのですか?
0そうだね
プレイ済み
返信[38]
親投稿
違いますよ〜。絵を変える時って感じですよ。 たぶん今、絵を変えるときはSPSETしちゃってるんじゃないですか? 本当はもう既に表示しているスプライトの絵を変えるのであればSPCHRの方が適しているって感じです。
1そうだね
プレイ済み
返信[39]
親投稿
こうやま kouyama1967
 nobuさんの一連の書き込みを見ていると、画面表示キャラのクリアやスプライト周辺について、まず机上で覚えてから本格的にプログラミングしようとしているようですが、SPCHRを知らないなると、残念ながら現状では基本的なスプライトの使い方も困難なように思えます。  事前に予習・調査する事も必要ですが、プログラミングは「習うより慣れろ」の世界です。  まずnobuさんは「最初にSPSETで出したいスプライトキャラを出し、それをSPOFSで動かし(アニメーションで動かすことはまだ考えなくていい)、ゲームオーバーになったらすぐプログラムは終わり(スプライトは画面に出たまま)」というミニゲームを、作れるようになって下さい。  SPDEFや画面クリアの命令は、今から覚えると頭がゴッチャになるので、まだ全く覚えなくていいです。上記が完璧に出来てから覚えて下さい。
0そうだね
プレイ済み
返信[40]
親投稿
スプライトの出現(SPSET) スプライトの絵(画像)変更(SPCHR) スプライトの位置変更(SPOFS) スプライトの表示/非表示(SPSHOW/SPHIDE) スプライトの消去(SPCLR) ※ただし画像変更や位置変更はSPANIMでも可能。 スプライト関係の命令は他にもありますが関係性的にはこんな感じもあり、SPSETは引数によってはSPCHRと同じような初期状態を持てるのでSPSETでやってしまう人が多いように思います。 実際の内部ロジックまではわからないのでSPSETとSPCHRでどのぐらいの処理の差があるかはわかりませんが、SPSETはSPCHRと比べて絵を変える以外の初期処理もしているのではないかとも予測され、単純に絵を変えるSPCHRよりは処理が重いのではないかという気もします。(正確に計測したわけではないので実際のことはわかりませんが…)
1そうだね
プレイ済み
返信[41]
親投稿
まあただ正常に動作しているのであれば無理に合わせる必要はないのでそのままでもいいとも思います。ただ頭の片隅にでもこのことを入れておいてもらえれば、何かあったときに問題を解決するヒントになるかもしれないです。って感じですかね〜。 なんとなく始めの本題とはだいぶ話が逸れてしまった気がしますが…(^^;
0そうだね
プレイ済み
返信[42]
親投稿
nobu divine-creator
命令の書き方に問題はあるかもしれませんが、すでにSPキャラを表示して動かすことはできていますよ♪ アクションゲームなどの動きではないのですけど、アドベンチャー形式でキャラを表示して、動くシーンのある作品を公開しています♪ それを御覧になれば、問題点もご理解いただけると思われます!是非、DLしてプレイしてみてください♪
0そうだね
プレイ済み
返信[43]
親投稿
けい kei0baisoku
おお、大体解決してる………(´ω`) 微妙なところを理解しようとすると、命令の機能の前に「スプライトってそもそもどうやって表示されているのか」ていう仕組みの方を把握する必要があるのかもしれませんね。 命令はすべてその仕組みに働きかけるだけなので。
1そうだね
プレイ済み
返信[44]
親投稿
なかなか微妙なところは説明しづらいというかちゃんと説明しようとすると長文になるんで難しいですよね〜…。 とりあえずSPキャラを表示して動かせているようなのでOKだと思いますよ。問題点もなんとなくわかりました。 例えばダイレクトモードで試してもらいたいんですが、 SPSET 0,500 SPOFS 0,200,100 としてキャラを中央に表示してから SPSET 0,400 とキャラを変えようとすると左上に表示されてしまいますよね? これをSPSET 0,400とせずに SPCHR 0,400 とすれば位置は変えずにキャラだけを入れ替えることが出来ます。また SPSCALE 0,2,2 として2倍に拡大した際も、SPCHRでのキャラ変更ならキャラ拡大を維持したまま変更出来ますが、SPSETで変更すると全て元に戻ってしまうわけです。
2そうだね
プレイ済み
返信[45]
親投稿
けい kei0baisoku
おおそうだ、余談に近いですが「キャラ」の補足。 プチコンの会話での「キャラ」はトリプルミーニングになっていて、どれを指すかは前後の文脈から判断する必要があります。 (1)人物のこと (2)絵のこと (3)文字のこと nobuさんがイメージしていたのは(1)で、でんぺんさんが言っていたのは(2)の意味です。 CHR$()命令は、(3)の文字を意味するcharacterの略です。
2そうだね
プレイ済み
返信[46]
親投稿
このように似たような命令でも動作の仕方は違うので、その辺の勘どころで思ったように動作しないと感じてしまう部分があるのではないかと思います。この辺は慣れや理解を深めていけば間違えないで使えるようになると思います。 SPDEFに関しても似たような違いに引っかかって思ったように動作しないと感じてしまっているのではないかとも思います。 まあでもまずは動くプログラムを書くのが大事なので、今現在でも色々と作られているようですし、また作成していく中で修正していければいいのではないかと思います〜。
2そうだね
プレイ済み
返信[47]
親投稿
けい kei0baisoku
うん、私もその通りだと思います(´ω`) そして説明の間に割り込み申し訳ないっす………
0そうだね
プレイ済み
返信[48]
親投稿
>けいさん いえいえー。僕も説明の間のブランク時間が長すぎました(^^; あとEMR_01をちょっとみてみて気づきましたが、nobuさんはせっかくSPDEFしているのに原点座標の設定がバラバラです。なのでSPDEFで定義したキャラがちゃんと表示されてないんだと思います。(表示されないから使わなかったんだろうけど) SPDEFの際に正しい原点座標を設定してあげれば、あとは普通に使えると思いますよ。ちなみに原点座標は同じキャラのバリエーション(表情など)はキャラを入れ替えただけで位置のズレがないように設定するのが便利だと思います。 (スプライトのサイズが全て同じサイズなら意識しなくてもそうなりますが)
0そうだね
プレイ済み
返信[49]
親投稿
nobu divine-creator
原点座標って、「そのキャラが基本的にいる位置」のことじゃないんですか? ただ、今回の作品の場合は、「立ち位置が状況によって変わる」ので、そのSPが「最初に現れる位置」を原点座標にしようと考えたのですけど、それが間違いなのでしょうか? それに、表情の差分と身体のサイズが異なるので、SPのサイズや原点の座標がバラバラになっているのは、仕方がないと思っていたのですけど、上手く設定することが可能なのでしょうか?
0そうだね
プレイ済み
返信[50]
親投稿
原点座標の理解は間違っていますね〜。原点座標は定義したスプライトに対してどの位置を座標の中心とするかの指定です。なので0,0にすると定義したスプライトの左上が原点になります。 あくまでSPDEFはスプライトの定義なので実際に表示する場所(立ち位置)などとは関係なく設定するのがポイントです。この辺がSPSETなどの表示とSPDEFの理解がごっちゃまぜになってしまっている部分でもあるのかなと思いますね。 言われるように差分や身体のサイズがバラバラな場合に統一した座標指定でもきちんと表示されるようにする為のものが原点座標です。また拡縮や回転は原点座標を中心に行われるので適切にしていすればうまく拡縮や回転も出来ます。
1そうだね
プレイ済み
返信[51]
親投稿
例えば画面中央の座標はなにも考えないと200,120になりますが、この指定の時にスプライトがきちんと中央に表示されるようにスプライトを定義(SPDEF)しておけば、利用するときにキャラクターのサイズをあまり意識しないでも利用出来て便利になるわけです。 (実際原点をどこにしておくのがベストなのかは設計によって変わってきますが) 以下の例はちょっとEMR_01の一部をお借りして設定例としてテストしたプログラムです。これは絵の中央下を原点にしていますが、イメージ伝わりますかね?
1そうだね
プレイ済み
返信[52]
親投稿
これが例です。
1そうだね
プレイ済み
返信[53]
親投稿
nobu divine-creator
ああっ、なるほど~!原点座標というのは、そういう意味だったのですか?!中心だったのですね…。左上の位置が、例として説明されていることが多かったので、SPの左上の位置がどこに来るか…と勘違いしていました…。それで、SPSETを細かく指定しないと表示されなかったのですね♪
0そうだね
プレイ済み
返信[54]
親投稿
なんとなく伝わったようで良かったです〜。 SPDEFを正しく指定出来ていればSPSETやSPOFS,SPCHRは本当にシンプルに指定出来るはずなので、それがうまくいかない場合はSPDEFの扱いがおかしいという感じになってるんですよね。 またSPANIMで"I"指定をする際もSPDEFでの定義が元になるのでSPDEFでの設定が正しくないと思うようにアニメーション出来ないと感じてしまう場合もある(とくに後でSPHOMEを変えようとすると)ので、その辺りも注意して扱うとより便利に使えると思います〜。
1そうだね
プレイ済み
返信[55]
親投稿
nobu divine-creator
でんぺんさんのおかげで、原点座標を正しく直せましたが、SPCHRって指定したSPを別のSPに変えていくため、SPHIDEで隠す時には、一番最初に指定したSPを隠さないとダメなんですね…! 最初は、SPCHRで次々に入れ替わっていくのかと勘違いしていました…。そうしたら、変わらない&隠れないという状態になり、仕組みが理解できました♪ それと、けいさんからのアドバイスの「最初にまとめてSPSET」に変えてみましたが、それだとSPの読み込みが見えてしまうのですね…!(短時間ですけど…。) これを見せなくする方法って、あるのでしょうか?
0そうだね
プレイ済み
返信[56]
親投稿
そうですね〜。スプライトは管理番号(大体始めの引数)に絵を割り当てるんで同じ管理番号だったら共通して消えたり移動したり絵を変えたり出来ますからね〜。 僕だったら同じ人が二人出てこないのであれば一人に1管理番号を割り当てるかもしれません。(そうすれば移動したり絵を変えても最後の位置に残るし画面外まで動かしたりHIDEでは消せる&番号から誰かがわかりやすいので) けいさんのSPSETは試したことがないですが、一つの管理番号につきセットしたらすぐに消すようにしたら一瞬出ることもなくなったりしませんかね? つまりパターン的には、 SPSET 0,〜:SPHIDE 0 SPSET 1,〜:SPHIDE 1 SPSET 2,〜:SPHIDE 2 … って感じになる感じです。(もちろんFORを使ってループとかさせれば短くは出来る)
0そうだね
プレイ済み
返信[57]
親投稿
nobu divine-creator
けいさんからのアドバイスとは、この投稿内のコメントで、「最初にまとめてSETして、すぐにHIDEしておくとラクなんじゃないか?」という内容で、それを参考にSET→HIDEを別々にしたら、SETにかかる時間の分だけ表示されていましたが、同時に行うようにしたら、全く表示されずに待ち時間もほとんど変わりませんでした♪(むしろ速くなった?気がするのは、VSYNCの時間が1つになったせい?) 後は、SPCHRへの変更が多数残っていますが、Ver1.1でプログラムの大幅な改良ができそうです♪ありがとうございました♪
1そうだね
プレイ済み
返信[58]
親投稿
nobu divine-creator
SPCHRって便利なのですが、意外な欠点…というか、SPHIDE後にSPSHOWで再登場させる時に、最後に変更した状態で出てくるのですね…! なので、その時の状態を覚えていないと、別の表情が出てきてしまうのですね! 結局、どんな方法にせよ、各キャラの状態を把握していないとならないのですね…。(登場キャラが多いと大変ですね…!)
0そうだね
プレイ済み
返信[59]
親投稿
欠点と言うよりはそれが利点でもあるんですけどね〜…。 とりあえずですが僕ならSPHIDEで消したものが再度出る場合は、SPCHR後にSPSHOWするなどするかもです。 というか、この辺は各キャラの管理の仕方によって簡単にも複雑にもなると思うところなので、出来るだけ簡単になるような仕組みを作っちゃった方が早いかも…って感じはしますね。
0そうだね
プレイ済み
返信[60]
親投稿
nobu divine-creator
ありゃ?SPCHR後にSPSHOWですか…?そうか!隠れていても関係無いのですね♪ SPSHOWの直後にSPCHRでも問題無いでしょうか?すぐに表示されるので、それでも平気かなと思っていたのですが…。
0そうだね
プレイ済み
返信[61]
親投稿
SPSHOW直後にSPCHRでもすぐ表示されるからその間にVSYNCでもない限りはほぼ問題ないと思いますよ〜。試してないのでわからないですが実際前の絵が表示されさえしてなければ問題ないと思います! SPHIDEからのSPSHOWはSPSETの場合と違ってSPSHOWする前に裏でゴチャゴチャ出来るんでちょっと便利な感じがします。(舞台袖で準備してるみたいな) ただ上記のようにすぐに使うなら逆順でも実用上問題ないと思うんで大丈夫だと思います。
1そうだね
プレイ済み