2007-10-01から1ヶ月間の記事一覧

ブロックの移動連鎖

坂道が上下に動く場合と、リフトの上にブロックが乗っている場合に対応しました。 動く坂の差分 ブロックの移動連鎖の差分 ブロックの移動連鎖は、下降する場合は下のブロックを動かしてから上のブロックを動かし、上昇する場合は上のブロックを(再帰的に)動…

坂道 その4

坂道を歩く処理を再実装しました。 差分 前回の実装では坂道の上にいるときはほとんどのブロックをすり抜けていましたが、今回はぶつかるべきブロックにはぶつかるようになっています。 そもそもブロックの当たり判定を無視していた理由は、坂の境界線上にキ…

リフト その6

移動ルーチンをコルーチンからファンクタに変更して、坂の処理を追加中です。 ファンクタになったことで組み合わせが容易になったので、walk_routineをvx_routineに、gravity_routineをvy_routineに変えて、その2つを使ってstraight_routineに相当するもの…

リフト その5

今日もあんまり進んでいませんが、とりあえずリフトの上で歩けるようにしました。 今日の差分 リフトが横に動くわけではないので、これまでの歩き処理と大差はありません。 なお、既にgravity_routine()でもやっていましたが、当たり判定がブロック単位でな…

リフト その4

一昨日のコードは上りリフトにしか対応していなかったので、今日は下りリフトに対応させました。 今日の差分 20フレーム分の座標をチェックするテストコードも追加しています。 前のコードではキャラクタの移動順序を気にしていませんでしたが、この順序が重…

mutableな参照を返さないために

C++

えーと、今日は作業はほとんど進まず、設計を少し弄っただけです。 前から気になっていた問題なんですが、コンテナをメンバに持つクラスで、そのコンテナを外部から自由に弄らせたい場合、よく void bar_check(int x); // 何かのチェック関数 class hoge { p…

リフト その3

大改造のコードをいきなり本コードに混ぜるとコンパイルエラーの嵐で大変なので、とりあえずコンソールアプリとして試作品を作ってみました。 lift_test.cpp 上昇するリフトに自由落下してきたキャラクタが衝突するときの、それぞれのY座標を出力するプログ…

新移動ルーチン考察

キャラクタの上に乗れるように大変更中です。 合わせてマズそうな箇所も作り直しています。 現在の移動ルーチンは、 std::pair<acceleration,sprite_form> routine(rect, velocity, sprite_form, input_command); の形式で、物理法則に従う分には問題ありません。 しかし、リフトが画面</acceleration,sprite_form>…

リフト その2

いくつかバグを取ったものの、肝心のリフトに乗る処理ができていません。 坂と違ってブロック単位の座標すらも変わってしまうため、マップの当たり判定をしてからキャラクタ同士の判定をしている現在のコードではうまく対応できません。 多分、一体ずつ順に…

リフト

次のお題はリフトです。 今日は画像の表示と移動までできました。 今日の差分 横幅を変えれるようにと思って、32x16のキャラクタを繋ぎ合わせることにしたんですが、出現タイミングがバラバラなため画像もずれてしまっています。 これと同じ理由で隣接して配…

滑り降り

坂の上で下ボタンを押したときに滑り降りるようにしました。 今日の差分 滑り降りる時のスプライトの下部には攻撃用の当たり判定を設定しているので、坂すべりアタックも可能です。 マリオでどうだったか調べてませんが、滑り始めた瞬間から攻撃できるように…

坂道 その3

いろいろな地形で坂の当たり判定をチェックして、大分マシになってきました。 今日の差分 マップチップとの当たり判定は進行方向によって変わるようにして、坂の裏側からすり抜けないようにしました。 昨日書いていた坂の上での移動スピードは上りのみ速度を…

ウィルスバスター2008

早速アップグレードしてみました。 action_game.exeでDLLインジェクションがやたらと報告されて困ります。 Sleipnirでも引っかかるので、何かのシステムDLLの中でやってる気がします。 あと、迷惑メールフィルタがMS製メーラーでしか使えなくなってました。 …

坂道 その2

なんとか坂の上を歩けるようになりました。 差分 今のところ45度の坂だけなので、境界の判定は単純に計算で求めています。 まだ、ブロックの切れ目の処理が適当です。 実装は坂の上にいる状態で左右に動いたときにY座標を補正しているだけなので、移動の直線…

坂道

坂道の実装を考えつつ、とりあえず画像だけ対応しました。 差分 今のところブロック扱いではないので、キャラクタがすり抜けます。 で、坂の上を歩けるようにしたいんですが、 ブロック 足が少しでも引っかかっていたら落ちない。 坂 キャラクタの中央下が境…

続 パンチ

パンチで敵に攻撃できるようにしました。 差分 スプライト情報に攻撃範囲の矩形を追加して、その範囲内に敵がいたら倒すようにしています。 また、敵を倒したときにひっくり返るだけでは分かりにくかったので、少し吹き飛ばすようにしてみました。 差分 あと…

パンチ

今日はコナミマンみたいなパンチを実装しようと思って、パンチのモーションだけ入れてみました。 差分 パンチボタン(Cキー)を押すと、5フレームパンチを出します。 まだ、パンチのマネだけで攻撃はできません。 パンチを出している間もボタンの状態遷移を追…

重力フラグ

重力オフにするオプションを追加してみました。 差分 垂直方向の加速度に重力を足しこむ位置が変わっただけです。 これで、いくつかのルーチンを単純化できるかなと思っていたんですが、移動ルーチン側では重力のオン/オフを出来ないので、あまり活用できて…

アイテムのニョキニョキ

アイテムのニョキニョキアニメーションを実装しました。 差分その1 差分その2 アイテムが出現するタイミングは、ブロックが押し上げられるアニメーションの後です。 このため、キャラクタが消えるタイミングでイベントを起こす必要があります。 で、game_c…

erase_old_enemies

風で頭が回ってないこともあり、まだ根本的な解決は出来ていませんが、周辺から少しずつ直していくことにしました。 とりあえず、地形もキャラクタとして扱うとなるとメモリの使用量も増えるので、画面から外れたキャラクタは削除するようにしてみました。 …

動く足場

まだ構成を見直し中で、コードが書けていません。 今日は、フライングハテナブロックやリフトのような動く足場への対応をメインに考えていました。 足場が動く(キャラクタに乗れる)となると、 地形との衝突判定がブロック単位でなくなる 一つのフレーム中で…

構成を見直し中

キャラクタの構成を見直し中です。 現在のコードだと、 どんなキャラクタもブロックに埋まると右に移動する キャラクタが乗れるのはブロックの上だけ ブロックをすり抜ける敵を作れない などの問題があります。 フライングハテナブロックやリフトのようなも…

パワーアップアイテム

チビからデカになるパワーアップアイテムを実装しました。 今日の差分 キノコだとアレなので、ミルク(瓶入り)になっています。 出現するとなぜか動き回りますが、気にしてはいけません。 きっとミルク王国の住人が誰かさんの魔法で姿を変えられているのでし…

Wi-Fi USB コネクタ

いつの間にか「ニンテンドー Wi-Fi USB コネクタ」のVista対応ドライバが出ていたので試してみました。 http://wifi.nintendo.co.jp/usb-connector/download/index.html 別件でインターネット接続共有を使用済みだったので、インストール途中でエラーになり…

続 チビ形態とミス

ミスしたときの効果音の追加と穴に落ちたときにミスになるようにしました。 差分 ミスしたときの音楽はJ.S.バッハの「トッカータとフーガ ニ短調」の冒頭部、要するに「鼻から牛乳」のアレです。 ミスしたときの移動ルーチンは、「vanish_routine」から効果…

チビ形態とミス

1ブロックサイズのチビ形態を実装しました。 差分 まだ、パワーアップアイテムがないので、デカ形態でスタートして、ダメージを受けるとチビになります。 あと、チビだとレンガブロックを壊せなくしたり(差分 )、チビでやられるとやられモーションの後でリ…

コインブロック

コインブロックを実装しました。 差分 ハテナブロックだといろいろ不味そうなのでビックリマークにしたんですが、マリオワールドで別の用途に使われてましたね、、、。 とりあえず、気にしないことにしましょう。 動作としては、ビックリブロックを叩くと一…

続 ブロックの突き上げ

画面のサイズは決めうち問題は修正箇所が意外と少なくてすぐ終わりました。 差分 これとは別に気になっていたのが、ブロックの突き上げで敵を倒すときの判定です。 敵がブロック中央にいても倒せないことがあって、落下してきた敵によくぶつかります。 ゲー…

敵のポップアップ

昨日からマリオの1-1のデータでテストしていているんですが、最初の穴を越えたところで降ってくる敵(クリボー)がプレイヤーキャラが到着したときには既に穴に落ちているというマヌケな状態でした。 これは全てのキャラクタがゲーム開始時から動いているのが…

壊せないブロック

TODOの中で一番簡単な壊せないブロックを実装しました。 差分 これはブロックを壊せるようになる前のコードをコピーしただけなので簡単です。 あとは細かい修正なのですが、スプライトのアニメーション速度を移動速度に比例させるようにしてみました。 差分 …