2012-04-08 10 views
0

私は本当に助けが必要です。私は最終年度プロジェクトのゲームアプリを作っています。それは、壁や斜めのブロックの跳ね返りによってボールをターゲットに撃つ必要があるシンプルなゲームです。しかし、私は2つの分野で助けが必要です:Android用の衝突&タッチ+撮影方法

  1. 撮影メカニズムは愚かなゾンビのそれに似ています。十字線があり、ボールをどの方向に向けたいのかを画面上でタッチします。リリース時には、ボールはその方向に移動し、うまくいけばターゲットに入り、重力と摩擦がなければ停止する。

    問題はどうすればこのようなコードを作成できますか?

  2. 私は壁のリバウンドにボールが必要です。ボールがターゲットに到達するためにボールが特定の部分に当たっているように、いくつかのブロックを斜めにします。目標に達していなければ、ボールは最終的に停止するでしょう。

    壁とブロックの衝突を作成するにはどうすればよいですか?

私は私がゲームを作るためにチュートリアルを見つけようと、最後の数週間を過ごしてきたが、私が作っていたゲームの種類にあまり具体的な発見していません。これは私の最初のアンドロイドアプリであり、私の最後の1年間のプロジェクトのため、サンプルコードやテンプレートを提供できれば大丈夫です。時間があまりありません。

+0

ボックス2dコードとチュートリアル、特にbox2d liteを見てください。それは簡単であるように設計されています。 – Rick

答えて

1

あなたの質問は誰もあなたのためにあなたのプロジェクトをするつもりはありませんスタックオーバーフローのためにあまりにも一般的なものであり、事前に
akkki、ありがとうございました。あなたが基本的なプログラミング経験を持っていれば、本を手に入らずに最初にそれを学ぶと仮定します。

あなたが既にあなたのタグのためにAndroidを選択していると仮定して、簡単な2次元ゲームを想定します。

事前リクエスト: すでにお持ちでない場合は、java + eclipse + android sdkをインストールしてください。 新しいプロジェクトを作成し、月面のlandarの例を使用し、携帯電話またはエミュレータで実行されていることを確認します。

開始サンプル: 月のlandarにはゲームループがあり、常に画面全体を再描画します。これはdoDraw関数を常に呼び出すことによって行われます。キャンバスを使用して線、円、ボックス、色、ビットマップを描画してゲームに似せることになっています。 (canvas.draw ....)Lunar landarはOpenGLを使用しないので、ゆっくりと使えますが、はるかに使いやすくなります。

サンプルのストリップ: おそらくキーイベントや月の宇宙船は必要ありません! は、それはあなたが空白の画面を取得する必要があり、これはあなたのゲームを作り始めるためにあなたのキャンバス..です新しい

@Override 
public boolean onTouchEvent(MotionEvent event){ 
    return false; 
} 

ランを作成onKeyDownメソッド が が起こるどんなエラーがあれば削除し、 はonKeyUpを削除onDraw機能のすべてを削除します。あなたはボールに言及して、ボールが何であるかを分かりました。位置と方向、ボールx、yの変数を作成direction_xとdirection_yタッチイベントがボールの方向を変更したい場合、ドローイベントはボールを移動します。 (ボールx、yに方向x、yを加えて)ボールを描画する(canvas.drawCircle(x、y、radius、new Paint())) 最も重要なことは、簡単で実験を開始することです。

2衝突

衝突がdodraw関数の中で行われ、に分けることができます。オブジェクトを移動、行くそうであれば、誰の通知前にそれを戻すことになっている場合、そのオブジェクトが経過しているかどうかをチェックします。 ...衝突検出の多くの異なった手法があります。

  • は、あなたの壁には、すべての(最も簡単)は、その後の衝突をボックス壁のxに対する新しいX、Y + -radiusボールをチェックし、水平および垂直方向、Y、幅であればその1つの大きなif文とgoogleの高さは数十億の例を持っています。

  • あなたの壁が角度をつけて必要ラインの衝突を検出する場合、基本的にボールがあなたの壁のベクトルに向かっている線のベクトル(ベクトル)があり、2つの線が衝突する場所を確認し、あなたのボールの半径と壁の両方にある(Googleラインの交差関数)

  • またはカラーピッキングを使用すると、あなたの壁がすべて赤であることを知っているシーンを描画してから、新しいボールx、yは赤で、あなたがヒットしたことを知っている

うまくいけば、これはあなたが始まり、あなたの次の質問はより具体的になることができます。

+0

非常に感謝していただきありがとうございます – akkki