ユーザ用ツール

サイト用ツール

wiki:defold2:tips:003

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
wiki:defold2:tips:003 [2017/11/11 13:31]
step
wiki:defold2:tips:003 [2018/04/04 22:56] (現在)
step
ライン 128: ライン 128:
   * Scriptには雛形となるコードが記述されているので、これを改造して実装する。   * Scriptには雛形となるコードが記述されているので、これを改造して実装する。
  
-<sxh cpp; title: player.script>+<code>
 function init(self) function init(self)
  msg.post("​.", ​ "​acquire_input_focus"​)  msg.post("​.", ​ "​acquire_input_focus"​)
ライン 176: ライン 176:
 function on_reload(self) function on_reload(self)
 end end
-</sxh>+</code>
   * init で変数の初期化。on_input で入力処理を、update で移動処理を実装している。   * init で変数の初期化。on_input で入力処理を、update で移動処理を実装している。
   * このスクリプトをplayerのGameObjectにAdd Component File から追加します。   * このスクリプトをplayerのGameObjectにAdd Component File から追加します。
ライン 199: ライン 199:
  
  
-<sxh cpp; title: player.script>+<code>
 function init(self) function init(self)
  msg.post("​.", ​ "​acquire_input_focus"​)  msg.post("​.", ​ "​acquire_input_focus"​)
ライン 250: ライン 250:
     end      end
 end  end
-</sxh>+</code>
 add と書かれた部分のコードを追加します。 add と書かれた部分のコードを追加します。
 fire キーが押された時に、rocketfactory を生成するスクリプトになっています。 fire キーが押された時に、rocketfactory を生成するスクリプトになっています。
ライン 261: ライン 261:
   * scripts 右クリック -> New -> Script からスクリプトを追加。名前は rocket.script としました。   * scripts 右クリック -> New -> Script からスクリプトを追加。名前は rocket.script としました。
  
-<sxh cpp; title: rocket.script>+<code>
 go.property("​dir",​ vmath.vector3()) ​ go.property("​dir",​ vmath.vector3()) ​
  
ライン 286: ライン 286:
 end end
  
-</sxh>+</code>
 dir プロパティを追加。initでロケットの速度を初期化し、updateで移動処理を実装しています。 dir プロパティを追加。initでロケットの速度を初期化し、updateで移動処理を実装しています。
  
ライン 312: ライン 312:
   * rocket.script を編集します。   * rocket.script を編集します。
  
-<sxh cpp; title: rocket.script>+<code>
 function init(self) function init(self)
  self.speed = 200  self.speed = 200
ライン 334: ライン 334:
 end end
  
-</sxh>+</code>
 実行するとロケットが飛んで1秒後に爆発エフェクトが再生されます。 実行するとロケットが飛んで1秒後に爆発エフェクトが再生されます。
 しかしこのままでは爆発エフェクトのゴミが残ってしまいます。エフェクトのゲームオブジェクトが削除される様に修正します。 しかしこのままでは爆発エフェクトのゴミが残ってしまいます。エフェクトのゲームオブジェクトが削除される様に修正します。
  
-<sxh cpp; title: rocket.script>+<code>
 function on_message(self,​ message_id, message, sender) function on_message(self,​ message_id, message, sender)
     if message_id == hash("​animation_done"​) then     if message_id == hash("​animation_done"​) then
ライン 344: ライン 344:
     end     end
 end end
-</sxh>+</code>
 on_message にスクリプトを追加します。hash値でチェックしている“animation_done” は“play_animation”が呼ばれたたあと送られてくるゲームエンジンのに内包されているメッセージです。この場合、“play_animation”でのSpriteアニメーションの再生が完了時に“animation_done”が呼ばれる形になっています。その時go.delete()関数でゲームオブジェクトを削除します。こうすることで、爆発アニメーションが終了したあと、rocketゲームオブジェクトが削除されます。 on_message にスクリプトを追加します。hash値でチェックしている“animation_done” は“play_animation”が呼ばれたたあと送られてくるゲームエンジンのに内包されているメッセージです。この場合、“play_animation”でのSpriteアニメーションの再生が完了時に“animation_done”が呼ばれる形になっています。その時go.delete()関数でゲームオブジェクトを削除します。こうすることで、爆発アニメーションが終了したあと、rocketゲームオブジェクトが削除されます。
 \\ \\
ライン 399: ライン 399:
 -- 関数化。爆発アニメーションの再生。 -- 関数化。爆発アニメーションの再生。
  
-<sxh cpp; title: rocket.script>+<code>
 local function explode(self) local function explode(self)
     self.life = 1000     self.life = 1000
ライン 428: ライン 428:
     end     end
 end end
-</sxh>+</code>
 爆発アニメーションをexplode 関数にまとめました。on_message 関数で"​collision_response"​が送られてきた時に、explode で爆発アニメーションを再生し、対象のGameObjectを削除しています。実行するとロケットが戦車に当たると爆発アニメーションと共に消える様になっています。 爆発アニメーションをexplode 関数にまとめました。on_message 関数で"​collision_response"​が送られてきた時に、explode で爆発アニメーションを再生し、対象のGameObjectを削除しています。実行するとロケットが戦車に当たると爆発アニメーションと共に消える様になっています。
 \\ \\
ライン 460: ライン 460:
   - ui.gui_scriptを開きます。   - ui.gui_scriptを開きます。
  
-<sxh javascript; title: ui.gui_script>+<code>
 function init(self) function init(self)
     -- score の変数を定義し0で初期化します。     -- score の変数を定義し0で初期化します。
ライン 477: ライン 477:
     end      end
 end end
-</sxh>+</code>
  
   - add_score メッセージを発火するためのスクリプトをrocket.gui_scriptに書きます。   - add_score メッセージを発火するためのスクリプトをrocket.gui_scriptに書きます。
-<sxh javascript; title: rocket.script>+<code>
 function on_message(self,​ message_id, message, sender) function on_message(self,​ message_id, message, sender)
     if message_id == hash("​animation_done"​) then     if message_id == hash("​animation_done"​) then
ライン 492: ライン 492:
     end     end
 end end
-</sxh>+</code>
 これでロケットで戦車を倒すとスコアが100点加算される様になります。 これでロケットで戦車を倒すとスコアが100点加算される様になります。
  
Permalink wiki/defold2/tips/003.1510407079.txt.gz · 最終更新: 2017/11/11 13:31 by step

oeffentlich