"自作ゲーム"カテゴリーの記事一覧
-
例の当たり判定、どんなマップでも通用するかと言うと答えはNo。
しかしまったく使い物にならないかと言えばこちらもNo!一応ゲーム
の命、壁ずりは行われるのです。ようは精度の問題ですね。
私の場合動かすキャラの4つ角に線分を張っています。こうすることで
角をすり抜けないようにすることができました。が、線分を4つ追加する
ことで起こる問題は深刻で綺麗な壁ずりの実現は難しいとされます。
簡単なことです。
「前ならえ」をしたじょうたいであなたの家の角(凸)に突っ込んでみて
下さい。左手が左の面右手が右の面にぶつかり進めないはずです。
これがプログラム上で起こるとどうなるかは容易に想像出来る筈です。
そもそも、壁ずりに線分を1つ以上使うことが間違いなのか?
今一度考えていたところ、糸口が見つかった気がしました。
もう少しで案が浮かぶかもしれません。
PR -
たかだか1モデルに時間がかなり掛かっております。
kar98kは意外にモデル化すると難しいことに気づきます。
照準機が細かい細かい。出来るだけローポリゴンにして
いかにそれっぽく見せるかですが、この凹凸はポリゴン化
しなければ再現するには難しいですねぇ私には。
今回はテクスチャにある程度力を入れているのでそれっぽく
見える筈。いや、そうであって欲しい・・・
このFPSでとても重要になる武器になる予定なので気合を
いれて作ってはいるのですが集中力が・・・モチベーションが・・・
後に控えているのはチャンバー周り>ストック。
ストックは問題ないとして、チャンバー内も作らないといけないので
面倒です。どこまで再現するかはわかりませんけどね^^;
-
マグナムはとりあえず撃つモーションが完成したので、お次は
ライフル系。モデルはkar98kドイツ軍の歩兵ライフル。今回も
手元にあるkar98kのエアガンを参考に作成してゆく。
いつも木目はかなり前に作ったテクスチャーを使いまわしていました
が、それを編集して使用する形になりました。今回の木目はあまり
宜しくない仕上がりで、テカリや影の表現なしで評価してもなんとも
言えない感じになっています(現段階)。どうなるでしょうねぇ・・・
ノーマルにするかスコープを付けるかはまだ未定。
ちょいとした話ですがカートリッジ式エアガンを買って知ったこと。
いろいろなFPSでkar98kが登場しますが、リロード時にクリップに
収まったまままっすぐに弾丸がチャンバーの中に入って行きますが
実際はダブルカラム状に入っていくんですね。当然と言えば当然
ですけどね^^;
-
謎なのかなんなのか。
timeGetTime関数が使えませんよ!
この関数を使う下準備は済ませてあるはずですが、
どうも上手くいか無いんですよね~・・「識別子エラー」
windows.hの後にmmsystem.h、そしてwinmm.lib
をを依存ファイルに指定もしくは#pragmaで。
timeGetTime()にカーソルを合わせると定義されている
事は確認できるのですがねぇ、実行すると認識していない
と出てしまいます。そもそもなぜこの関数を使いたいかと
良いますと、各武器のファイアレイトやリロードを時間で
管理したいからです。
幸いなことにEasy3Dの命令でそれに近いものが有りました
ので、それでやるしかないですね。
-
関数内での変数宣言はスタック領域と言うメモリ領域に、記録される。
その関数を抜けると自動消滅してしまいます。関数外で定義すると
グローバル変数となり静的領域に記録されます。しかし多すぎると
失敗してしまうそうで。
一度だけ実行される関数で宣言した場合、もちろんその変数の寿命
はその関数を抜けた時で、もしその変数の内容を他の関数に持って
行きたい場合はreturnで値を返すか(この時点でコピー)、グローバル
変数や関数の引数に変数のアドレスを渡し、代入するなどをする必要
がありますね。
自動消滅は変数管理に便利ですが、かといって要領の大きいサイズのグ
ローバル変数を何個も作ると、あまり宜しくない気がします。
そこでグローバルだけど静的領域ではなくヒープ領域に保存すれば積もる
事も無く記憶できる容量も多くなるのでは?という案が出ましたが・・・
ただ、このようなことは教本には載っていないので、実際に試してみる
しかないのでしょうね。実際に試したところ問題なく動作はしますが、
内部的にきちんと働いてくれているのかが気になりますね。アドレス
を見れば大体分かると思いますが、そのために試すのは面倒くさそうですw
例:
int *g_Val = new int();
果たしてどうなのでしょうかねぇ
?