[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今回は様々な速度や軌道が変化する物に関する解説をば
飛び道具でも突進技でも、様々な軌道があるのが普通ですね
単純に一直線に飛ぶ物もあれば、放物線を描く物
ホップする物だってあるだろうし、バウンドする物だってあります
飛び道具や突進技の作り方についてはすでに書きましたので
必要な部分だけ書いてみましょうか
さて、以前説明した通り、移動させる命令は
velsetかveladdを使います
まずは放物線を描く物から行きますと
ついtype = Sにして、その物体に重力を掛ければ良いと思いがちですが
これをやると、初期の設定通りの重力しか掛けられない為
ゆっくり落としたり、すばやく落としたりという事が出来ません
なので、ここではtype = Nに設定する事から始めます
普通の放物線を描くには
[State 100]
type = velset
trigger1 = time = 0
x = 4
[State 101]
type = velset
trigger1 = time = 0
y = -4
これで斜め45度に一直線に上がりはじめますね
で、放物線を描かせる為に
[State 102]
type = veladd
trigger1 = 1
y = 0.2
こんなですか
addについては説明しましたが、再度
この場合、1フレームに0.2の速度を増加させますので
最頂点に到達するのは20フレーム時ですね
その後降下し始めます
さて、これだけだと、地面にめり込んでも落下を止めませんので
[State 103]
type = changestate
trigger1 = pos Y <= 0
trigger1 = time >= 20
value = ???
こんな構文でchangestateしましょう
一見timeは必要無さそうに思いますが
posだけで設定すると、飛び上がる前にchangestateしてしまいます
この場合放物線を描いてから地面に接地した時点で終了ですが
2,3回バウンドする場合はどうするかというと
最初のvelsetを
[State 104]
type = velset
trigger1 = pos Y <= 0
y = -5
こっちに変えて、changestateを
[State 105]
type = changestate
trigger1 = time >= 100
trigger1 = pos Y <= 0
value = ???
と、timeを長く取ってやれば
バウンドしますね
もっとちゃんと作りこみたい場合
pos Y <= 0 で changestateして
飛び道具であれば地面に接地した時点でムニョンと変形した絵を出したり
ヘルパーであれば着地した絵を出したりして
再度飛び上がるステートに移行してやる方がいいですな
ホップする場合はveladdのyの数値をマイナスにしてやれば
ぐーっとホップします
この場合はchangestateのtriggerにposを加えず
timeだけで取ってやれば良いです
veladdはこのように放物線を描く為に使う事も出来れば
ゆっくりと速度を落とす場合にも使えますね
直進した物体がゆっくりと速度を落とす場合
[State 106]
type = veladd
trigger1 = time > 0
trigger1 = vel X > 1
x = -0.1
このように使えば、射出してから50フレーム時には
速度1まで減速してくれます
trigger1 = vel X > 1というトリガーを入れて限定しているのは
こうやって切ってやらないと、バックし始めるからですね
このvel X の数値を0にすれば最終的に停止しますし
逆に正数を入れてやれば加速します
triggerで1を指定してますけど
例えば
trigger1 = time > 0
trigger1 = time < 30
と、時間を限定して指定する事も出来ますね
[State 107]
type = veladd
trigger1 = time > 0
trigger1 = time < 30
y = 0.5
[State 108]
type = veladd
trigger1 = time > 30
trigger1 = time < 60
y = -0.5
こんな構文にしてやれば
放物線を描いて落下しだしたかと思えば
再度ホップし始めるという、すごい変化球になりますね
これを見て気付いた方も居ると思いますが
誘導弾も作れます
[State 108]
type = veladd
trigger1 = p2dist X > 0
x = 0.2
[State 108]
type = veladd
trigger1 = p2dist X < 0
x = -0.2
[State 108]
type = veladd
trigger1 = p2dist Y > 0
y = 0.2
[State 108]
type = veladd
trigger1 = p2dist Y < 0
y = -0.2
すっごい簡易ですが
これで誘導弾になりますね
波動拳のような、画像が横向きじゃないとおかしい物の場合は
角度や向きを変更してやらないといけませんが
それはまた今度