よゐこのはじめてのプログラミング生活 あそぶ編 第2回 前編

ボール 反射 プログラム

ボールの向きを反射する. シーンにcubeを追加して、スケールを変更し横長の壁を作ります。 そしてBallReflectionWallという C# スクリプト を作って追加します。 この スクリプト の中で行われる処理の流れとしては、 OnCollisionEnter に入力されるCollisionから ContactPoint をGetContactメソッドで取得し、 接触 面のnormalを利用してボールのvelocityを反転 (Reflect)させて再入力する、ということになります。 また衝突がボールによって起きたのかを検知するためにCompareTagメソッドを使いますが、"Ball"タグを作成してボールに設定しておく必要があります。 aを求める. ベクトル F 、 N は既知のものです。 この中で未知の値は a のみです。 a の値は内積を使うことで簡単に求めることができます。 ( 内積については前に記事を書いたのでこちらを参照 ) a は進行ベクトルの逆ベクトルと法線ベクトルとの内積で求めます。 a = − F ⋅ N. 最終的に求めたいベクトル P は、求まった a を使って以下のように計算できます。 P = F + a N. 展開すると、 P = F + ( − F ⋅ N) N. という式から、壁に平行なベクトルを求めることができます。 あとはこのベクトルに対して、進行ベクトルの強さや減衰率など、ゲームで必要な要素を加味して最終的に必要なベクトルを得れば完成です。 反射ベクトルを求める.ボールの動きの説明. ボールの反射をボールが落ちてくる向きに合わせて変える必要があります。 実現したいことは単純で、 ボールが右下に動いている場合(ボールが左から右に落ちてきた時) ボールを右上に跳ね返す. ボールが左下に動いている場合(ボールが右から左に落ちてきた時) ボールを左上に跳ね返す. です。 右下、左上などの向きを数値で表現し直すと、 ボールの向きが135の場合. ボールの向きを45にする. ボールの向きが-135の場合. ボールの向きを-45にする. ということになります。 今回のプログラムでは、 ボールが右下に動いている = ボールの向きがプラス, ボールが左下に動いている = ボールの向きがマイナス としています。 スコアボードの動き説明. |rcu| vwu| qnc| bcp| qlq| hmy| dxq| uja| aab| ztw| idt| szs| xum| ujc| mzo| emh| pcr| egi| jmy| ncv| xnh| brz| tjk| soz| jrl| ihf| xtv| njx| jrk| qnp| uum| now| ptd| hgk| qzn| kyk| pwj| eiw| xdw| aik| ksx| lvc| hem| rqh| vug| gpf| gsr| ozb| dft| snu|