メインコンテンツへスキップ
  1. SOroom/

cameraタグで移動中にセーブできないようにする

ゲ制 ティラノスクリプト

というわけで、そんな感じのことを書いていきます。一応自分のゲームで動作は確認しているのですが、カメラ移動の時間を結構短めにやっているので、他の方の環境だと違う現象が起こるかもしれません。その辺ご留意していただければ幸いです。


ティラノスクリプトではcameraが移動中かどうかを判定する変数がデフォルトであります。kag.jsのstat内でゲーム変数として定義されているものです。

    is_move_camera:false, //カメラの演出中かどうか

これですね。cameraタグの中では

    that.kag.stat.is_move_camera = true;

という感じで、カメラ移動する前にこの変数をtrueにして、終わったらfalseにしています。kag.tag_camera.jsを見ると分かりやすいです。

この変数は、wait_cameraタグで使われています。これがtrueの時はカメラを待ってる変数(is_wait_camera)がtrueになって、その時はnextOrderされない(次のタグに進まない)という形です。

で、この変数を利用すると、cameraタグで移動中には、セーブできないようにすることも可能です。セーブできないようにする、というか、セーブしようとしてボタンを押しても反応しない、という感じですね。

例えばbuttonタグのrole=saveを、カメラ移動中に封印する場合は、kag.tag.js内のtyrano.plugin.kag.tag.buttonの中身、

            //roleが設定されている場合は対応する処理を実行
            //指定できる文字列はsave(セーブ画面を表示します)。load(ロード画面を表示します)。title(タイトル画面に戻ります)。menu(メニュー画面を表示します)。message(メッセージウィンドウを非表示にします)。skip(スキップの実行)
            if (_pm.role != "") {

という風に、roleの処理を定義している部分で。

                //文字が流れているときは、セーブ出来ないようにする。
                if(_pm.role =="save" || 
                _pm.role =="menu" || 
                _pm.role=="quicksave"||  
                _pm.role=="sleepgame"){
                    
                    //テキストが流れているときとwait中は実行しない
                    if(that.kag.stat.is_adding_text == true || that.kag.stat.is_wait == true){
                        return false; 
                    }
                    
                }

ここに

                //文字が流れているときは、セーブ出来ないようにする。
                if(_pm.role =="save" || 
                _pm.role =="menu" || 
                _pm.role=="quicksave"||  
                _pm.role=="sleepgame"){
                    //テキストが流れているときとwait中は実行しない
                    if(that.kag.stat.is_adding_text == true || that.kag.stat.is_wait == true ||
                       that.kag.stat.is_move_camera == true){
                        return false; 
                    }
                    
                }

こんな感じで、この変数をorで加えれば、カメラ移動中、save,menu,quicksave,sleepgameのロールが振られているボタンをクリックしても、何も起こりません。これをsaveだけにしたい場合などは、that.kag.stat.is_move_cameraで個別に条件分岐すれば大丈夫ですね。

ちなみにkag.key_mouse.jsの

//役割系のロジック
_role : function(role) {

以下の_role定義内で、同じように書かれているので、ここで条件加えると、ゲーム自体でそういう動作になります。でもbuttonタグだけで使うなら、buttonタグ改造でいいのではないでしょうか。私はこっちで書いて、buttonタグでやればいいのでは……?となりました(真顔)。