FC2ブログ

CF2.5覚書。オブジェクトを非表示じゃなく、透明のオブジェクトで表示させる方法。

・今回やりたいこと、アニメーションのパターンに画像のない(あたり判定のない)透明のアニメフレームを作成したい!


cf2.5の仕様上、アニメーションは必ず1ドット以上ないとアニメーションとして登録されないんです。
アニメーションエディタ上で、画像を削除してまっさらな状態にしてしまうと、アニメーションはないものとして判断されてしまう。

一応CF2.5には表示/非表示というのを設定できて、ただキャラを見えないようにするというだけならこの機能で非表示にすればいいだけなんです。
ですが、あたり判定が消えるわけではないので、あたり判定を一時的になくしたいときは、そのオブジェクトは破壊するか移動するかしかないんです。

解決方法は最初に書いたやりたいことのように、画像のないアニメフレーム作成して、あたり判定を消したいときはそのフレームを呼び出せれば問題は解決なんですが、上記で書いたように、画像がないとアニメとして登録することができない。

そこで発見した解決方法。

1、アニメの1フレーム目は何も描いて無い画像にする(透明な画像)
2、2フレームに1ドットでもなんでもいいので適当に何か描いてある画像を配置する。
3、アニメスピードを0にする。

これだけ!
つまり、アニメを呼び出した時に最初のフレーム(透明のフレーム)が呼び出されたとき2フレームに移動しなければ透明な画像が表示されたままになるということなんです。


消滅バグとエリア移動に時間がかかる問題(clickteam fusion2.5)

バグは単純なミスによるものから、難題ものであり、まだまだ詰めが甘いなぁと思います。

大体はすぐに確認できて修正できたのですが、一番やっかいで一番大切なところの拘束中に起こるバグ、コイツに今頭を悩ませています。

何が厄介って・・・
私自身が1回もそのサエ消滅バグを再現できていない!ということ。
サエちゃん・・・何百回拘束されたでしょうか(笑)
まさか丸一日同じ作業するとは思いませんでしたw

同時に10匹以上のスライムに囲ませたりもしましたが・・・
(スライム10匹以上に囲まれるサエちゃんを見れるのは私だけですよ(笑))

そして一回も再現できなかった・・・

再現できない状態でイベントに修正を加えるのは結構危険で、再現できていないということはどこに問題があるかわからないということで、下手したら問題なところもバグの原因になりかねない。

とにかく状況を再現させるのが大事だと思うんです。

一応イベントを何度も確認したんですが、いくつか怪しいところがあるものの、その消滅バグには影響を及ぼすものではない。

そこで、思いついたのが無理やりバグを起こすイベントを組むというもの。
簡単にいうと、消滅が発生するイベントの直前に変数を無理やり変更したりして、現在のイベントの組み方を変えずに消滅が起こる原因を起こしちゃうってことなんです・・・

そして、一つだけまさかな・・・と、思うイベントを組んでみると・・・
消えた!!サエちゃん消えたよっ!!!!

やっと発見か!?

しかしですね・・・
実はこれありえないんことなんですよ・・・

見事に消滅を再現はできたんですが、この消滅用に無理やり組んだバグイベント、変数をある数字に変更するというものなんですが、この数字に変更するイベントをたどってもどうやっても何度確認しても、この消滅イベントには関わらないように組んであるんです。

つまり、おそらく原因は他にある。

怪しいのがForeach関連か、アニメーションの終了時の処理に関すること、あるいは他の敵の動作が絡んでいるなどなど、だと思うんですが、いくらチェックしても結局はわからずじまい。

しかしこのまま放置しておくわけにもいかない。

そこで、この拘束解除直後のイベントを作り直しました。
ただ、どちらにしても私自身が再現できていない状況なので直っているかどうかがわからないっていうのが不安を残してしまいました。

おそらくたぶん直ったはず・・・

もし、拘束時にまた消滅したぞということがあれば報告をいただけたらとても助かります。



ついでにもう一つ困ったちゃん、エリアをまたぐときの読み込み時間についてですね。
これも今回のアップで、改善を行ったのですが、まだ遅い気がする。
前々回の記事で詳細を書いたのですが、これを行った直後はエリアの移動に7秒ほどかかっていたのが3秒ほどに縮まったのですが、後日確認をすると5秒ほどに戻っていた。
やはりサブアプリが重さの原因になっているっぽいんですよね。

そして、先ほど以下のテストしてみました。
サブアプリが表示するフレームにイベントとレイヤー、アブジェクトがあるものとフレーム内に何もないもので読み込みにどれくらい時間がかかるかをテストしてみました。

まずはサブアプリ自体がない状態だと1~3秒で次のマップを表示、サブアプリ用のフレーム内にオブジェクト等がある場合は5、6秒ほど、サブアプリ用フレームに何もない状態だと3秒ほどでマップの切り替えが行われていました。

そこで思いついたのが、以前も挑戦したメニューやマップ画面が表示される前にからのフレームを表示させておいて、メニュー等を表示させるときにサブアプリのフレームを移動させるというもの。

最初は空のフレームが表示されているので、エリア移動時の時間は上記の通り3秒ほどに短縮されました。
しかし、そのエリアで初めてメニューを表示させるときだけその空のフレームからメニューあるいはマップのフレームに移動するので2秒ほど表示が遅れるようになる。

でも、LAB2UGはエリア移動が多いゲームですので、こっちにして少しでも移動のストレスを減らす方がいいのかなぁっって思い、このやり方を現在テストして導入を検討しています。

できることなら、あらかじめメインとなるオブジェクト、サブアプリ等を常に読み込んでおける状態にできれば起動時には時間がかかっても起動してしまえばほかの読み込みに時間がかからない分早く動作してくれンるんでしょうが、CF2.5にはそういった機能ないっぽいんですよね・・・

私が知らないだけかもしれませんが・・・(汗

サブアプリとグローバルイベントについて(フレーム切り替え時に重くなる)

注:ちょっとこの記事はゲーム制作内部の話で、どうでもいい話なので興味ない方は飛ばしちゃってください(笑)

マップ移動の際の重くなるのはClickTeam Fusion2.5(以下CF2.5)で、ゲーム中の装備やアイテムの管理をするのにサブアプリケーションというのを使っています。


このサブアプリケーションが重さの原因というのは前々からわかっていたのですが、オブジェクトやイベントをいくら調整しても軽くならない。
色々とやってやっとでわかったのがこのサブアプリで表示しているフレーム側の設定で軽くなるということ。

その設定が、フレームのプロパティにある『グローバルイベントを含める』の項目のチェックを外すこと。
この設定を変えたことで、マップ切り替えの表示の時間が私のPCで3秒ほどかかっていた切り替え時間が1秒まで短くなりました。

どういうことかは推測になってしまうのですが、ゲーム中は実際プレイするメイン画面とアイテムや装備などを管理しているメニュー画面が同時に発生しているのですが、メイン画面だけだとグローバルイベントは1フレーム1回で読み込まれていると思うのですが、サブアプリと同時に存在していると、サブアプリ側でもグローバルイベントが読み込まれているようでおそらく重複してイベントが読み込まれているみたいです。(事実は不明w)

ただ、重複しているにしても解せないところも多々あるんです。

LAB2ではゲームのボタン配置をこのグローバルイベントで管理しています。
そして、メニュー画面などではボタンの推しっぱなしによる誤操作を防止するため変数を使って・・・

・ボタン変数が・・・ 0→ボタンが押されていない
             1→ボタンを押した瞬間
    2→ボタンが押され続けている
という風に管理しているのですが、サブアプリを使っているフレームではなぜか上記の『ボタン変数が1』が飛ばされていることに気づいたんです。
さらに探ってみるとみると、『ボタン変数が2』の時のままボタンを離しても0に戻っていないご様子。
どうやらサブアプリを使うとグローバルイベントが正常に動作していないのかな?って感じでした。

そこでこのサブアプリで使っているフレームではグローバルイベントは使わないように上記プロパティのチェックを外し、フレーム側でボタン関連のイベントを組み直したところ、ちゃんと動作しているようです。

このサブアプリ、非常に便利なのですが、内部でどういう動作をしているのかわからないのでこういったことになると、ちょっと困りますよね(笑)

CF2.5でゲーム制作をしていてサブアプリを使っていてマップ切り替え時に重くなるとか、サブアプリの動作がおかしいって思ったら、サブアプリ用で表示されるフレームの『グローバルイベントを含む』のチェックを外し、グローバルイベントは使わないようにした方がいいのかもしれません。

ちなみにサブアプリ側の『親アプリとグローバル変数、文字列を共有する』のチェックが入っていれば、サブアプリ側のフレームでもグローバルイベントは変更できるのでサブアプリ側でこれらを変更することはできるみたいです。 

今までサブアプリ自体の設定を見直したり、そのフレームのイベントを見直したりはしていたのですが、この表示されるフレーム事態のプロパティは見逃していました。

変数を使って特定の倍数で数値変更

用途:スキルポイント製作
概要:スキルポイントの振り分け時、HPをスキルポイントを5の倍数ごとに10増やしたかった。

使ったもの:変数3個
  スキルポイント用(変数A)と、どの倍数か指定する用(変数B)と、その倍数になったときに10を追加するHP用(変数C)。
使用したイベント行数:2行
  増加用と減少用

条件

変数A=変数B×5(倍数)

アクション
変数Bに1を追加
変数Cに10を追加

解説
条件は右が押されたとき(数値を増やす動作)
変数A(スキルポイント)が変数B(倍数)の5倍になったときにというもの。
これで変数Bの部分に『1』が入ったら5、『2』が入ったら10、『3』が入ったら・・・と、変数Bを変更すれば5の倍数のものを指定できるになる。

アクションは変数Aが条件に達したら変数B(倍数)に1を追加することで、次の倍数を指定することが出来る。
変数Bが1だったらアクションで変更後、2になり条件が10になったらになる。

とりあえずこれで数値が上がるたびに次の倍数を指定することが出来た。

減少させるのは条件にちょっと手をくわえる必要があった。

スキルポイントが5、10、15になったときに増えていくのだが、減少させるときも同じ式で減少をさせようとするとうまくいかない。
なので上記条件に-6を付け足すことでとりあえず解決。

これだけの式に3日もかかってしまった・・・

なんかもっとうまいやりかたありそうだけど・・・
とりあえずはできるようになったからいっか♪

ボタンの設定とキーコンフィグ

----------------------------------------------------
ボタンの設定
----------------------------------------------------
使うオブジェクトとエクステンション
・joystick 2 object
・ボタンのフラグを管理するオブジェクト。


ボタンの入力の判定をフラグで管理する。
真が押されている状態、偽が押されていない状態。

1、joystick 2 objectで入力を読み取りフラグで管理
2、ボタンのフラグ用オブジェクトと十字キー用オブジェクトを用意。
それぞれにフラグ(ボタンが押されたか放されたかを管理用)を設定。
  例:フラグ1→ジャンプ用
    フラグ2→攻撃用
             などなど

3、ボタンが押されているときはフラグを有効、放されたら向こうになるように設定。
  例:『ボタン1が押されたらフラグ1を有効に設定』から
ボタンの判定はフラグがよさそう。
一つの変数でも管理は出来そうだが、ボタンの同時押し時などは一つの変数では難しい。
複数の変数を使っても出来るが、判定はオンとオフの二つだけなのでフラグを使用した。


----------------------------------------------------
キーコンフィグ
----------------------------------------------------
使うオブジェクトとエクステンション
・joystick 2 object
・ボタン番号を保存するオブジェクト。(入力1、入力2ボタンを設定したい数だけ)
・攻撃、ジャンプなどの項目とボタン番号を表示するカウンター
・ボタンのフラグを管理するオブジェクト。(上記ボタンの設定で作成したやつ)
・ini++

考え方
ボタンの入力は上記でボタンを設定したとおりにフラグに変換される。
なので使用するフラグ番号を変更できるように設定するキーコンフィグを作る。

変更はそれぞれの項目で行う。
例: 

   攻撃    1      
   ジャンプ  2      
   項目↑   ↑ボタン番号(ゲーム上でのボタンフラグの番号になる。) 


 

やり方

『入力1』『入力2』など名前をつけた変数を持つオブジェクトを用意する。
(必要な変数は使用するボタンの数(ジョイパッドのボタンの数)それぞれに入る数値はジョイパッドのボタンの数)

例:10ボタンジョイパッド対応だったら
  『変数名』・・・入力1 『変数』・・・1~10
  『変数名』・・・入力2 『変数』・・・1~10
            ・
            ・
            ・
  『変数名』・・・入力10 『変数』・・・1~10



『入力1、2・・・』がジョイパッドのボタンの番号。
変数はどの動作に割り当てられるかをあらわした番号。
XBOXコントローラでたとえると
 『入力』の項目がボタンの種類(A,B,X,Yなど)
 『変数』の数字は攻撃、ジャンプ、などに割り当てられる番号(上記のキー設定でいうところのフラグの番号。)
    例:フラグ1→ジャンプ用
      フラグ2→攻撃用
         ↑コレになる


・ジョイスティックの押されたボタンを上記の変数に割り当てる。注意:オブジェクト名は省略。

 例:攻撃の項目で・・・『A』ジョイスティックのボタン1が押されたら『入力1』の変数を1に変更。
            『B』ジョイスティックのボタン2が押されたら『入力2』の変数を1に変更。
                         ・
                         ・
                         ・        
   ジャンプの項目で・・・『C』ジョイスティックのボタン1が押されたら『入力1』の変数を2に変更。
              『D』ジョイスティックのボタン2が押されたら『入力2』の変数を2に変更。
                         ・
                         ・
                         ・



ゲーム上でフラグ1だとジャンプ、フラグ2だと攻撃だったとする。
初期設定が『A』『C』だとボタン1を押すと攻撃、ボタン2を押すとジャンプになる。

・上記の設定で攻撃の項目が
『A』になっていたら、ボタン1が押された『入力1』の変数が1になるので、
これはボタン2が押されたときのフラグは1になるという意味。つまりボタン2が押されたら攻撃になる。

『B』になっていたら、ボタン2が押された『入力2』の変数が1になるので、
これはボタン2が押されたときのフラグは1になるという意味。つまりボタン2が押されたら攻撃になる。

・キー設定で作ったフラグ番号を変えられるように
『ボタン1が押されたらフラグ1を有効に設定』から『ボタン1が押されたらフラグ(入力1)を有効に設定』に変更する。

・これで上記の『ボタン1が押されたらフラグ(入力1)を有効に設定』の(入力1)の部分に変数が入る。


・最後に『入力』の項目をini++でiniファイルに保存する。
 

« »

09 2017
SUN MON TUE WED THU FRI SAT
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
検索フォーム
プロフィール

ねこのめめっ

Author:ねこのめめっ
なにやらあやしいアクションゲームを製作しているブログですw
ご意見、ご感想などのコメント、相互リンクは大歓迎です。
注:今製作中のゲームは成人向けです。

・販売中のゲーム
・DLsite.com
LAB-Still Alive-

・For DLsite.com ENGLISH
LAB -Still Alive-

DMM.com
LAB-Still Alive-

・予告中
販売用100サイズ

・DLsite版ブログ
こちらはこのFC2ブログでブログが見れなくなった時の連絡用になります。
ねこのめめっBlog

PIXIV
http://pixiv.me/nekonomeme

twitter
@nekonomeme

ご意見、ご感想、リンクの依頼などはこちからのアドレスからでもOKです。
メールアドレス
nekonomemegame@yahoo.co.jp

アクセスカウンター
バナー
nekobanner
labbanner2
個人的オススメアクション
ほとんど有名どころばかりですが個人的におもしろかったとおもったアクションゲームです。

GIRLvsGIRL(ver1.04) エロイーター
りょなげの缶詰 UnHolY SaNctuaRy
ヴィータ大脱出 parasite in city(1.03)
迷宮のマリオネット Kurovadis
ティファタンX2 コカゲの伝説 ~横スクロールHアクションゲーム~
TA-boo.ver1.2 セフィリア.FIGHT
みっくすりんちぃ Ver1.3 アイリス☆アクション
メカコアドベンチャ FIGHTDOLL VIBRATION
Bullet requiem -バレットレクイエム- サムライ・さくらメント
放浪都市 ミリア戦記DX
flowerfairy スクールドットファイト
フリーエリア

ブロとも申請フォーム
QRコード
QR

Archive RSS Login