Profile
HN:gp-hss
職業:高校生
趣味:3DCG
言語:C全般
環境:VC++ 2008 EE
3DCG:Softimage Mod Tool
自己紹介:
ゲームプログラマー目指して勉強している者です。
現在 C++ 修得にむけて頑張っています。
Began study since 2009/8/21
ゲームプログラマー目指して勉強している者です。
現在 C++ 修得にむけて頑張っています。
Began study since 2009/8/21
Entry
(07/31)
(06/13)
(02/22)
(02/21)
(02/20)
Latest TB
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
test(.zip)
あぁ~とうとう学校が始まりやがった。
冬休みなんて気休めに感じるほど短いな。
睡眠時間が・・・・・・まぁ学校で寝ればいい・・・のか?
えぇ~ということで始まりました今回は、
前回のソースをヘッダーにぶち込んでいろいろと修正したものです。
たぶんヘッダーの使い方は間違っているので真似しないように。
主に敵の動作に関して改良していきました。
敵の動作をどうしようかなぁ~と考えていたところ、
「そうだ関数 y = ax は利用できないだろうか?」
ということになり、考え方としては関数のグラフと交わった座標点を敵が移動していくようにするということです。
まずは敵(◎)を原点とした関数 y = ax (右図)を取得します。
方法は、敵を表す点をEとし、主人公をHとした場合、
E(eX, eY) H(hX, hY)
xa = eX - hX
ya = eY - hY
y = (ya / xa) * x
これで取得します。
なぜこれでいいのかは自分で考えてみてください。
この時点で敵と主人公の位置関係がわかります。
コマンドプロンプトの座標では右に行くほど x が増加し、下に行くほど y が増加します。
つまり、 xa が 0 より大きければ敵のほうが主人公より右に、 xa が 0 未満であれば左におり。
ya が 0 より大きければ敵のほうが主人公より下に、 ya が 0 未満であれば上にいることになります。
ここから敵を動かしていくわけですが、 x の値が動かなければ y はかならず 0 になり動かないままなので、とりあえず敵を左右のどちらかに動かします。
右に動けば x = 1 、左に動けば x = -1 となります。
この場合の x とは原点を敵座標とした xy 座標においてのものです。
そして y の値を求めます。
y が 1 以上なら下に移動させ、 -1 以下なら上に移動させます。
なぜなら、コマンドプロンプト上では下に行くほど値が大きくなり、上ほど小さくなるからです。
あとは障害物に当たったときの動作を追加していままでの処理を繰り返さしています。
いろいろとごちゃごちゃした説明でわかりにくいと思いますが、自分で図なんかを書いてみて、検証し、理解してください。
ではまた今度。
・・・・・・・ていうか・・・うわっ・・・・バカだ僕。
うわぁ~最悪だ。
このプログラムってただ主人公が上にいれば敵を上に移動させて、下にいれば下に、左にいれば左に、右にいれば右にっていうふうにやってるだけじゃん。
こんな複雑に考えなくてぜんぜん良かったわけじゃないか!
最悪だ・・・。
あっ、でもそうか。
ていうかこっちのほうがいいのか。
ただ単に移動させるのではなく、ちょうどいい感じになるように移動させられるのだから。
PR