モーリーのメモスマートフォン用の表示で見るモーリーのメモアプリ開発等(プログラミング、CG作成)、興味を持ったことを実践してまとめるブログです。Creator<今回やること!>物理エンジンを使ったシンプルなアクションゲームを作成します。こちらの記事の続きです。モーリーのメモスクリプトを作成します。スクリプトをコンポーネントとしてノードに追加します。スクリプトで設定したプロパティにノードやアセットを登録します。ボタンのクリックイベントを登録します。今回はスクリプトの作成、つまりプログラミングを行います。CreatorはJavaScriptとTypeScriptの2つの言語が選べますが、TypeScriptを選択しました。TypeScript未経験でも、JavaScript経験者ならすぐに分かると思います。TypeScriptについては、下記の記事も御覧ください。私が使用している環境です。(64-bit)プロジェクト実行時の処理の流れプロジェクトの実行時に、どのような順序で実行されるかを大まかに説明します。スクリプトをどこから読めば良いか、処理を追いかける際に参考にして下さい。開始シーン(プロジェクトの実行時に読み込むシーン)が読み込まれる。開始シーンに含まれるCanvasノードや実装したノードが読み込まれる。各ノードにコンポーネントとして追加したスクリプトが読み込まれる。各ノードのスクリプトに記述されたonLoad()やupdate()等のライフサイクルコールバック関数が実行される。ユーザーの登録したタッチ操作等のイベント関数が入力に応じて実行される。Creator』によって特定のタイミングで実行されるように定義されている関数です。下表のようなものがあります。ノードが最初に読み込まれた時。startより先です。updateが初めて実行される前。毎フレームの描画処理の前。毎フレームの描画処理の後。コンポーネントまたはノードがdestroy()を呼び出した時。onEnableコンポーネントのenabledプロパティがtrueに変わった時。ノードのactiveプロパティがtrueに変わった時。enabledがtrueのノードが読み込れた時。onDisableコンポーネントのenabledプロパティがfalseに変わった時。ノードのactiveプロパティがfalseに変わった時。Creator』エディタの『Scene』パネルに読み込まれているシーンが開始シーンです。開始シーンの設定は次の操作で確認・変更出来ます。Scene』になっています。特定のシーンに変更すること出来ます。『Game』スクリプトを実装ここから、ゲームの作成に戻ります。スクリプトファイルを作成します。『Game』スクリプトは『Canvas』ノードに組み込むスクリプトです。falseノードのアクティブをfalseにすると、非表示になり、イベントを受け取りません。0』だと透明化するだけで、イベントは受け取ります。cc.sys.localStorage.getItem(SaveKey.BESTSCORE)キーを指定して、保存済データ(String型)を取得します。this.score.toString())キーを指定して、データ(String型)を保存します。下記の処理で物理エンジンが有効になります。物体の形状や衝突判定の範囲を確認するには、下記のフラグを有効にします。形状を描く物体の形状を表示しています。Staticな剛体は緑、Dynamicな物体は赤です。update()の処理についてスタート時のカウントダウン処理とタイルマップの移動を行っています。タイルマップを移動する際に、既存のコインや爆弾等の物理ノードは削除して、作り直します。一度登録したStaticな剛体は、位置や形状の変更が出来ません。addPhisicsNode()、addPrefab()タイルマップのオブジェクト情報に従って、物理ノード(プレハブ化したものも含む)を作成します。タイルマップのオブジェクト情報については下記の記事も参考にして下さい。()『Button』コンポーネントに登録することで、クリックイベントで呼び出されます。『Player』スクリプトは『Player』ノードに組み込むスクリプトです。}}スクリプトの補足init()Gameクラス(Game.ts)側でinit()を呼び出すことで、Gameクラスの『実体(実行中のGameクラス)』を受け取ります。Gameクラスの実体のメソッドを呼び出すことで、得点処理等が反映されるようになります。onJumpUpAnimCompleted()『Timeline』パネルで、『JumpUp』AnimationClipに登録した関数です。指定したフレームで呼び出されます。Listener』をオンにすると、接触開始時に呼び出されます。this)』によって登録することでキーダウン時に呼び出されます。スペースキーの入力により、『Player』ノードのジャンプ処理を開始します。ジャンプ処理中の場合は処理しません。判別し、アニメーションの切り替え等の処理を行います。Camera』ノードに組み込むスクリプトです。}}スクリプトの補足Cameraのノードゲームが開始すると『Player』ノードは走り出しますが、『Camera』ノードが追いかけることで、ゲーム画面では『Player』ノードが同じ位置に表示されます。』にて『Camera』ノードの位置を更新しています。Component』→『Camera』をクリック『Properties』パネルで、『Camera』コンポーネントにノードやリソースをドラッグ&ドロップお疲れ様でした!以上で完成です。『プレビュー』ボタンを押して、ゲームを実行して下さい。あとがき物理エンジンを有効にすると物理空間(物理ワールド)が作成されます。物理空間の中で物体の位置・動き・衝突などが計算されて、それに結び付けられたノードの位置・角度に反映されるイメージです。一度物理空間に配置したコライダーは変更出来ません。Staticな剛体は移動も出来ません。地面等の剛体はタイルマップの子ノードに追加してますが、タイルマップを移動させでも一緒には動きません。物理ノードを作り直す必要があります。Creator以前、こちらの記事の続きです。2を使ってListViewを作成しました。v3.7...下記の記事の続きです。(8)参加グループプログラミングリンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!mmorleyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。