前回までは敵と当たってキャラが止まる。までいきました。
しかし、キャラは止まったままで背景と敵は動いています。
◯リオみたいに当たったら画面の外に飛んで行くような動きをつけるのでも良いですね。これはクリエーターの腕の見せ所のはず。
今回はその前のところの、背景と敵を止めて、ゲームオーバー感を出すところまでいきたいと思います。
Player.jsのPropertiesに_isGameOver
を追加します。私はbooleanでやりました。数値でも良いかと思います。
その後、敵と当たった時に呼び出されるonCollisionEnter
で先ほどの_isGameOverをtrueにします。
それでは次にScrollBackGround.jsに追記していきます。
var Player = require('Player'); cc.Class({ extends: cc.Component, properties: { // Playerスクリプトを使う為 _playerScript: null, }, // use this for initialization onLoad: function () { var play = cc.find('Canvas/player'); this._playerScript = play.getComponent(Player); },
以上を追加します。丸ごとコピーではなく追加してください。
ポイントとしては、Class宣言の前に
var Player = require('Player');
てことをしています。
Javaでいうimport、C#でいうusingみたいなもんです。自分で作ったスクリプトを使用する時はこれを使います。
propertiesで後で使うように_playerscript
変数を作成しておきます。
onLoad()で
var play = cc.find('Canvas/player');
としています。これはCanvasの下のplayerノードを取得します。つまりvar play = 'うんにょ君'
ということです。次に
this._playerScript = play.getComponent(Player);
これは先ほどのplay変数からPlayerコンポーネントを取得しています。つまり、this._playerScript = うんにょ君の持ち物である'Player'スクリプト
ということです笑
以上でScrollBackGroundでPlayerスクリプトを使用するための準備が出来上がりました。
では、どのように使って行くかというと、先ほどPlayerスクリプトで作成した、isGameOver=true
の時に「背景を動かすのを止める。」という記述をします。
update()で動かしていたのでupdate()の一番最初に
if (this._playerScript._isGameOver === true) return;
この一文を加え、「もしゲームオーバーだったらupdate()関数を終える」というようにしてあげます。
これで保存実行するとうんにょ君と背景が動かなくなると思います。
さらに、ScrollBackGroundに記述した内容をStageObjectにも記述すると敵も動かなくなるので、ゲームオーバー感が出て来たと思います。
今回はすこし短かったのですが、他のスクリプトを使う方法という大事なことをやりましたので、ここまで。
画像もないし、プログラムをゴリゴリやりますって人以外にはそこそこ重いんじゃないかと思います。
コメント