Basket Ball

このチュートリアルでは,バスケットボールゲームの作成方法について説明します。下記の動画ファイルのような動作となります。

下記のリンクから、サンプルファイルをダウンロード出来ます。 .

プロジェクトの設定

.psdファイルは 768×1024 です.iPad Mini向けのプロジェクトを作成しましょう.

変数の作成 - score

変数は情報を保存するために使用されます.このプロジェクトでは,スコアの変動を保存するために変数を使用します.それでは新しい変数を作成します.Project and Pages toolsetからCreate Variableをクリックしましょう

変数の名前をscoreとします.これはローカル変数(Local)となります。数値(Number)を保持することができます.変数の役割を忘れないようにコメントを加えることも可能ですが,ここえでゃコメントを追加する必要はありません.

  • Name: score
  • value: 0
  • Content: Number
  • Type: Local

動的なテキスト(Dynamic text) - score

scoretxtレイヤーを選択して,Layers and Replacement toolsetをクリックしてください.そこで,Dynamic Textを選択してください.Dynamic text replacementと変数を関連付けします。Dynamic Textは、画像レイヤーには適用できません。

開いたウィンドウで,Associated variableに score を設定してください


効果音の追加

いくつかのオーディオファイルが必要になります.床にボールが接触した時とボールがリングにあたり点数が加算された時に使用されます。オーディオファイルの手順は一緒です。

  • Back_Board.wav
  • BBOUNCE_2.wav
  • Swish_2.wav

Project and Pages > Add Audio toolをクリックしてください

ウィンドウが開くので,Swish_2.wavを選択し short fileを選択します.Controls > Loopのtimesを有効にして、1に設定します。

オーディオチャンネルを指定したい場合には,1から32のどれかの番号を設定してください.

  • Swish_2.wav

    • Short file
    • Loop 1 times

残りの二つのファイルも同様に設定していきましょう

  • Back_Board.wav

    • Short file
    • Loop 1 times
  • Bounce.wav

    • Short file
    • Loop 1 times

ベクター(Vector)置換によるメモリの節約 - goal レイヤー

画像の代わりに,ベクター図形を使用することができます.ベクター図形は、数式を通して描写されるためメモリを節約します.この作品では,goalレイヤー(透明なレイヤー)に設定します。goalレイヤーは、ボールが入ったかを検知する物体となります。

goalレイヤーを選択して,Layers and Replacements toolset からVector Replacement をクリックします

選択したレイヤーから得られるデフォルトの情報をそのままにし,Createをクリックします.

これでレイヤーはベクトルとして設定されたので,Kwikは画像として描写せず,メモリの使用量も減少します.

次にレイヤーを隠す作業です.Project and Page toolsetに戻り,Hide layer or groupをクリックします

ウィンドウが開き,Hide Layer optionを選択してCreateをクリックします:

アクション - hitFloor, playAro and changeScore

以下の操作が必要です

  • hitFloor

    • ボールが床にヒットすると,BBOUNCE_2 audioが再生されます
  • playAro

    • ボールがリングにぶつかると,Back_Board audioが再生されます
  • changeScore

    • Swish_2 audioが再生されます
    • スコアに2ポイント追加されます

changeScoreのアクションを作成しましょう(他の二つに関しても,ほとんど同様の手順で作成されます).Project and Pages toolsetのままで,Add Action toolをクリックしてください

action Play Audioを選択し、名前をchangeScoreと命名します。そして、Swish2 audioをリストから選択します。

次に Edit Variableを追加します.variable scoreを選択して以下の数式を選択します

UI.score + 2

この数式の意味は,現在のスコアにさらに2点追加するということです。

changeScore

  • Audio > Play Audio

    • swich_2
    • times 1
  • Code > Edit Variable

    • score
    • UI.score + 2

hitFloor

hitFloor アクションを作成して、Play Audioを設定します。 bbbounce_2が再生されます。

playAro

playAro アクションを作成して、 Play Audioを設定します。back_boardが再生されます。

aro(バスケットゴールの縁のリング)


物理演算

これまでの過程で,変数とその他の要素の配置は完了しました.次に物理演算の追加です.物理演算により重力といった現実の挙動を可能にします.

環境設定

Physics toolsetから,Enviromentボタンをクリックします。

Hybridモードを選択、(最後にはNormalに変更しますが),物理物体のデバッグモードです。

  • Hybrid
  • Create virtual walls around the screen
    • Top, Left, Bottom, Right

グラビティ座標によって物体に発生する重力加速度を決定することができます.デフォルトでは9.8に設定されています(これは現実の重力加速度と一緒で,上から下まで全ての物体が落ちることを意味します)

display modeが、物体がどのように描写されるかを決定します.Hybridモードは物体が正しく衝突しているかどうかをチェックするのに適しています.今回はボールの挙動が簡単なので,Hybridモードを使用します.

Create virtual walls around the screenはスクリーンの周りに自動で仮想の壁を生成する機能です.これがないと,ボールが画面の端までいった時にそのままどこかにいってしまいます.このデモでは,床の画像があるので,top,left,rightの壁を作成しましょう.

物体の作成

全てのレイヤーを物体として設定する必要があります。構成する物体は下のようになります。

  • floor(床)
  • ball(ボール)
  • goal(ゴール,詳細は後述)
  • aro(バスケットゴールの縁のリング)

全ての物体に同じプロパティを設定します。複数のレイヤーのプロパティを同時に変更することが可能なので,floorとaroを選択して,Add Bodyボタンをクリックしてください

body windowが開くので,以下のようにオプションを設定してください

  • floor
  • aro

    • Static
    • Rectangle

      床とaroは重力を受ける必要がないので,Staticとします。Saveボタンを押して,プロパティは二つのレイヤーの設定を保存します。

ballを選択して,同様にAdd Bodyをクリックしてください.パラメータを以下のように設定してください:

  • ball

    • Dynamic
    • Circle

      動的な相互作用を行う Dynamic設定とします.Densityは物体の質量を設定します.Frictionは物体同士の摩擦度を設定します.Bounceはオブジェクトが衝突した時の跳ね返り係数です。

      パラメータに関する情報はCorona's APIをご覧ください.

      形状(Shape)はcircleを選択します.もっと複雑な形の場合,フォトショップのパス(最大8点)を指定するか、Pysics Editorを使用して、ポリゴン(Polygon)を利用してくください。

ゲームの性質上,点数をカウントする必要があります。ボールがゴールエリアにヒットした時に,ポイントが加算されます.goalレイヤーを選択して、Add Bodyをクリックし,以下のように設定します。

  • goal

    • Static
    • Is sensor
    • Rectangle

      この物体は重力を受けず衝突も扱いません.なので Is sensorが有効です。他の設定はデフォルトのままにします.センサーは物体は重力の影響を受けませんが,衝突を検知します。

衝突

これからボールと他の物体が衝突した時の動作の設定を行います.Physics toolsetから,Collisionsをクリックしてください。

  • ball hits aro

    • Main Body: ball
    • Collision: aro
    • Action: playAro

      ballをmain bodyとして設定し(リストから選択),aroをcollisionとして設定します.このときの動作に,playAroを選択しましょう.このプロジェクトでは,衝突後にどのオブジェクトも消去したくないので,消去(Dispose on collision)のチェックボックスはオフにしてください。Saveをクリックして保存します。

同様にballとfloor, ballとgoalの衝突を設定します。

  • ball hits floor

    • Main Body: ball
      • Collision: floor
      • Action: hitFloor

hitFloorのアクションを呼び出します。

  • ball enters goal!

    • Main Body: ball
      • Collision: aro
      • Action: changeScore

changeScoreのアクションを呼び出します。


ボールを投げてみよう!

これでほぼ全ての設定が完了しましたが,まだボールを投げる設定が残っています.それでは,ballレイヤーを選択してSet force propertiesをクリックします

  • ball

    • Push
    • Curved trajectory
    • Add amount of force in X:10, Y:10

Impulse optionで,Pushを選択します。Curved trajectoryをチェックしてより滑らかな動きを可能にします.amount of forceを10に設定します(ここに関しては数値を様々変更しながら自由に遊んでみてください).Saveをクリックして保存します。

物理演算を用いたゲームを作成することができました!

Enjoy!

results matching ""

    No results matching ""