4

私は経験豊富な iPhone 開発者ですが、Cocos2D と Box2D は初めてなので、物理学の復習が必要であることは十分に認めています。私が構築しようとしているのは、プレビュー軌道 (入力変数に基づいて発射体の飛行経路を示す円弧 - 多くの Angry Birds スタイルのゲームで見られるものと同様) です。

ただし、開始点 (画面上の発射体の開始位置) と終了点 (ターゲットの位置) を設定するという、少し違うことをしたいと思います。ただし、ユーザーの入力に基づいて放物線の高さが変わります。この意味で、私は放物線パスを使用してターゲットが着陸する場所をプレビューするのではなく、発射体がターゲットに当たる角度をプレビューしています (繰り返しますが、放物線は常にターゲットで終了します)。

私のニーズを完全に満たすものをオンラインで見たことがありません。利用可能なコードのほとんどは、発射体が着地する場所をユーザーに示すことに関係しています。角度 (ベクトル) を決定し、体に適用するインパルスをさまざまな放物線の振幅に一致させたいと考えていますが、常に同じ位置で終了します。写真は千の言葉に値するので、説明を助けるために自家製の写真にリンクしました(だから画像を埋め込むことはできません).

サンプル画像

どんな助けでも大歓迎です。

4

2 に答える 2

1

これを数学モデルで表現しましょう...Angle放物線の方向は入力変数であり、放物線はx軸と交差0target pointheightが計算されます。

放物線は次のようになりますy = x*(a-x)*b。ここでa、はターゲットポイントまでの距離を定義し、(を使用して)開始角度と高さに影響を与えるb値です。原点中心でのa角度を計算できます。atan (x/y)そして、接線は放物線の導関数を表すことがわかっています。導関数は、、y' = a*b - 2*x*b原点中心y=0x=0、であり、を取得し[derivative in origin center] = a*bます。aはターゲットポイントまでの距離として事前定義されているため、:angleを変更することによって影響を受けます。bangle = atan(a*b)

この時点でy = x*(a-x)*b、事前定義された放物線方程式a=[distance to target point]*4と角度方程式angle=atan(a*b)があります。ここで、bは入力値です。例えば:

  • ポイントまでの距離は10->a=40
  • ユーザー入力45*->tan(45 *)= 1、b = tan(45*)/a->b=1/40
  • これらの値を方程式に入れてくださいy = x*(a-x)*by = x*(40-x)/40そしてチェックしてください...

最大高さは、a*x^2+b*x+c = 0を条件とした式から算出されх=-b/2аます。自分で計算するのは難しいことではないと思います:)

于 2012-12-07T10:53:14.790 に答える