変数とリストを使わないチャレンジを しようとしただけです。動きブロックは さすがに使わないと無理です。 物理のプログラムもあったから演出クッソ手抜き。 無理に決まってんだろ!!!! 頑張ったよ!!!!!?自分は!!!! 毎日毎日!!!!!!!!ちょっとずつ 試してさあ!!!!????? マジで悲しい・・・・・・(´;ω;`)ウゥゥ
【画像の説明】 壁に触れた瞬間に実行される「ではないまで繰り返す」の部分。 ここは、計算した法線ベクトル(nx, ny)の方向に少しずつ動かして、壁の外へ押し出す処理。 原理:壁に対して垂直な方向(法線)へ戻せば、最短距離で脱出できる。 壁の角度(wall_angle)から、壁に対して垂直な向きの成分を取り出す。 原理:cos と sin を使うことで、斜めの壁でも「どのくらい横向きか(nx)」「どのくらい縦向きか(ny)」という向きの割合がわかる。 ここが一番重要。今の速度(vx, vy)が、壁に対してどれくらい真っ直ぐ突っ込んでいるかを計算する。原理:vx * nx + vy * ny。 この値がプラスなら壁に向かっていて、マイナスなら遠ざかっている。衝突の「強さ」を測る指標になる。最後に、今の速度から「壁に突っ込んだ分の速度」を引いて、逆に跳ね返す。 原理:速度 - (2 * 内積 * 法線) 突っ込んだ速度(内積)の2倍分を差し引くことで、向きがちょうど鏡合わせのように反転する。 最後に 0.8 などを掛けるのは、衝突の摩擦や衝撃でエネルギーが減る(反発係数)のを表現するため。でも、出来なかったから☆