忍者ブログ
Profile
HN:gp-hss

職業:高校生

趣味:3DCG

言語:C全般

環境:VC++ 2008 EE

3DCG:Softimage Mod Tool

自己紹介:
ゲームプログラマー目指して勉強している者です。
現在 C++ 修得にむけて頑張っています。

Began study since 2009/8/21

Latest CM
[06/28 soulmorning]
Latest TB
(02/25)
33  32  31  30  29  28  27  26  25  24  23 
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

author : gp-hss ×

test(.zip)


あぁ~とうとう学校が始まりやがった。
冬休みなんて気休めに感じるほど短いな。
睡眠時間が・・・・・・まぁ学校で寝ればいい・・・のか?

えぇ~ということで始まりました今回は、
前回のソースをヘッダーにぶち込んでいろいろと修正したものです。
たぶんヘッダーの使い方は間違っているので真似しないように。
主に敵の動作に関して改良していきました。

敵の動作をどうしようかなぁ~と考えていたところ、
「そうだ関数 y = ax は利用できないだろうか?」
ということになり、考え方としては関数のグラフと交わった座標点を敵が移動していくようにするということです。

参考画像1 参考画像2

まずは敵(◎)を原点とした関数 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 以下なら上に移動させます。
なぜなら、コマンドプロンプト上では下に行くほど値が大きくなり、上ほど小さくなるからです。

あとは障害物に当たったときの動作を追加していままでの処理を繰り返さしています。
いろいろとごちゃごちゃした説明でわかりにくいと思いますが、自分で図なんかを書いてみて、検証し、理解してください。

ではまた今度。


・・・・・・・ていうか・・・うわっ・・・・バカだ僕。
うわぁ~最悪だ。
このプログラムってただ主人公が上にいれば敵を上に移動させて、下にいれば下に、左にいれば左に、右にいれば右にっていうふうにやってるだけじゃん。
こんな複雑に考えなくてぜんぜん良かったわけじゃないか!
最悪だ・・・。
あっ、でもそうか。
ていうかこっちのほうがいいのか。
ただ単に移動させるのではなく、ちょうどいい感じになるように移動させられるのだから。

拍手[0回]

PR
author : gp-hss ×

COMMENT

ADD YOUR COMMENT

NAME
TITLE
MAIL
URL
COMMENT
PASS

TRACKBACK

TRACKBACK URL
忍者ブログ | [PR]
 | PAGE TOP
write | reply | admin