[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ジャンプ処理移植完了。
ちょっと時間を食いすぎたけど。。。
でも、スムーズに放物線を描いて飛んでくれた時は嬉しかったです(感想!?)
引き続き、ダメージ表示も作っておきました。
とりあえず見た目の処理を先に作る方針で、
ダメージ計算とかは後回しにしてるので数値は適当です。
今の段階では1人のキャラが一匹のモンスターに対して行う処理だけなんで、
【動作一つに4つのパターン分け】でも書いたように、
対象のモンスターの数やエフェクトの数による処理分けをこれから作ります。
バグチェックは大変かもしれないけど、
放物線みたいに未知の領域に踏み込むわけではないので
大丈夫、と自分に言い聞かせておきましょう。
,. -‐'''''""¨¨¨ヽ
(.___,,,... -ァァフ|
|i i| }! }} //|
|l、{ j} /,,ィ//|
i|:!ヾ、_ノ/ u {:}//ヘ
|リ u' } ,ノ _,!V,ハ |
/´fト、_{ル{,ィ'eラ , タ人
/' ヾ|宀| {´,)⌒`/ |<ヽトiゝ
,゙ / )ヽ iLレ u' | | ヾlトハ〉
|/_/ ハ !ニ⊇ '/:} V:::::ヽ
// 二二二7'T'' /u' __ /:::::::/`ヽ
/'´r ー---ァ‐゙T´ '"´ /::::/-‐ \
/ // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ
ノ ' / ノ:::::`ー-、___/:::::// ヽ }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::...
あ…ありのまま 今 起こった事を話すぜ!
まだ放物線やってるんだぜ・・・
というかやっと作れそうです。
ここまで来るのに3回ソースを丸々書き直しました。
以下、遍歴
ジャンプ放物線1号機はバグだらけで即廃棄。
2号機はとりあえずは綺麗な放物線を描いたものの、
滞空時間が初期値を越えるとYの増加値が元に戻っていくという現象で
波のような放物線が出来上がったので廃棄。
3号機では、シンプルに滞空時間とジャンプ力のみで放物線を描くことに成功。
テスト用の別プログラムで組んだので、これからメインの環境に移植するところ←いまここ
てな感じです。
ゲーム以外では、なんか最近バタバタと環境が変わりつつあるので、
ゲーム作りが出来なかったり、眠かったり、眠かったり・・・
そんなこんなですが、やっと梅雨も明けてくれたんで、
外にノーパソ持っていってゲーム作りにいそしもうとたくらんでおります。
なので、ムヒは必須な。
前回までは行動時のアニメのセクションごとにパターン分けをしてましたが、
それにともない相手への選択範囲の際のバグ取りとキャラクターIDのフォーマットを修正をすることになりました。
【攻撃】のコマンドを選び最初にカーソルが合うのは一番前のモンスターになります。
しかし、戦闘開始前のキャラクター描画の都合上、左上(つまり後ろから)から順番にIDを指定していたので修正することにしました。
そうなると今度は描画時のIDの扱いが変わるのでその修正がけっこう大変でした。
あとは、カーソルの表示というか挙動の制御をしていました。
前にいるモンスターから後ろのモンスターにカーソルを合わせる場合には左のキーで移動しますが、
左のキーを押し続けてもそれ以上は動かないか、それとも前に戻るか、
そのゲームに合った表現方法を選んでシステムを組む必要があります。
こういう地味な部分ほど操作感覚に影響がでるので注意が必要です。
現在進行形で作っているのは、
ついに(?)アニメーションで実際にキャラクターが動くところです。
ジャンプしてモンスターに攻撃するか、走っていって攻撃するか、
放物線と直線移動のためのコモン(汎用関数)を作っています。
具体的には主人公の座標とモンスターの座標、ジャンプ力、重力のデータをコモンに渡すと、
経過した時間に合わせて移動した距離を返してくれるという処理です。
(エセ)放物線の計算処理はある程度できあがったので、
次はジャンプ力を=0と入力した際に、放物線か直線かを自動で判別して計算しくれる機能をつけるつもりです。
次回の更新までには、
モンスターに攻撃してダメージが表示されるところまでできあがっていたいです。
前回のつづきです。
【自分アニメ】の中には【一度だけアニメ】する【対象の数のぶんだけ動く】の2種類のパターンに分かれます。
例えば、全体魔法で炎を使ったとします。その場合、自分は詠唱を【一度だけアニメ】するだけですね。
これが、弓矢で乱れ撃ちとかだと、敵の数だけ弓を射る【対象の数のぶんだけ動く】になります。
【エフェクト】にはそれ自体にパターンがあり【一匹ずつ】と【画面全体】のピクチャーの大きさの指定をすることになります。
例えば、先ほどの弓矢【一匹ずつ】であれば、エフェクトは飛んでいく弓矢になるので、対象は敵一体だから【一匹ずつ】の分類になります。
対して、一つのアニメで複数の相手にダメージを与えるような魔法は【画面全体】に表示されます。
【相手アニメ】にも【一匹ずつ】と【画面全体】で分類します。
これは全体エフェクトに対して、ダメージを一匹ずつ出すか一気に全員分出すかの違いが主になります。
例えばFFシリーズのメテオという魔法だと【画面全体】に隕石が降るアニメーションを流しながらランダムで【一匹ずつ】にダメージを与えるという感じです。
【ダメージ数字】は上であげた【相手アニメ】とほぼ連動しています。
一応、汎用性を考えて分けてシステムを組んでおきます。
上記のパターンを僕の大好きなFF5で当てはめるとこうなります。
ファイア(全体)=【一度だけアニメする】+【一匹ずつ】+【画面全体】+【画面全体】
アクア=【一度だけアニメする】+【画面全体】+【画面全体】+【画面全体】
メテオ=【一度だけアニメする】+【画面全体】+【一匹ずつ】+【一匹ずつ】
みだれうち=【一匹ずつ】+【一匹ずつ】+【一匹ずつ】+【一匹ずつ】
放物線の構築はなんとかできました。
X,Y座標、角度、力に加えて、時間、頂点の値が必要なのはなんとかわかりました。
なんとか。
とりあえず完璧な放物線を描く処理をするのは幼卒の頭では無理なので、
独自の放物線関数を作って処理しようと思います。
とにかくね、完成させるのが優先です。
それっぽく見えたらソースなんてなんでもいいんですよ(たぶん)
そんなこんなで放物線、つまりジャンプしたり玉が飛んだりというアニメーションを作るつもりだったんですが、
その前にアニメーションを段階別に分割して、それぞれの役割の関係性を構築する作業が待ってました。
【自分アニメ】行動を起こしたキャラクターのアニメ
【エフェクト】炎や剣で攻撃したときの閃光アニメ
【相手アニメ】それを受けた相手キャラクターのアニメ
【ダメージ数字】受けたダメージを表示
全てのアニメパターンをこの4つに分けます。
・・・長くなりそうなので続きは次回