Profile

アメリ

Author:アメリ
キャラ紹介

line
カテゴリ
AIR (1)
Pos (1)
Var (1)
FAQ (1)
line
不許カウンター
line
最新記事
line
最新コメント
line
最新トラックバック
line
月別アーカイブ
line
sub_line
カレンダー
02 | 2011/03 | 04
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
line
検索フォーム
line
リンク
line
RSSリンクの表示
line
QRコード
QR
line
ブロとも申請フォーム

この人とブロともになる

line
sub_line
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
line
 velはfloat型で様々な影響を受けます。ステートが変化した場合にvelを移すのは各statedefのvelset=vel x, vel yで良いのですがそれ以外の方法だと問題になる場合があります。変数に値を格納して必要な時に取り出す方法もありますがいつ設定するかと言うのが問題になります。

摩擦
velocityはx方向に於いて[Movement]の以下の値の影響を受ける。yについては分かり易いと思うので取りあえず省略。
[Movement]
stand.friction = .85 ;Friction coefficient when standing
crouch.friction = .82 ;Friction coefficient when crouching

この値が乗算される。つまり、通常は地面に接している状態だと設定した速度よりも落ちる。
[Velocity]
jump.fwd = 2.5 ;Jump forward Speed (x, y)
上記の場合にphysics=Sでvelを与えても*.85されてしまう。

 また、physicsがS,Cの場合には1.0以下のvelの影響を受けない様になっています。これを回避するにはphysicsをAにして尚且つジャンプ状態の制御をする必要があります。然るべき設定を行わないで地上でphysicsをAにしても着地してしまうので52番のステートに移ってしまいます。

; Jump Land
[Statedef 52]
type = S
physics = S
ctrl = 0
anim = 47

 これを防ぐにはphysics=Sでpos yを-1以下に設定して空中に設置し地上に立っている様に見せる方法があります。地上で擬似的な動作をする為にはposをfvarで計算して整数部分が増減(変化)したらposを加算する処理が必要です。また、physics=Aの時にpos yが0以上になると自動的に着地処理が行われるので着地前に余裕を持ってphysicsを設定する必要があります。
 physics=Sでpos y=-1であれば高さが1変わるだけなので特に問題は出ないと思いますがステートの終了時にposを0に戻すべきで、また食らった場合を考慮すると食らった瞬間にpos yが変化せず-1のままでvel yが0であればpos yを0にする様な処理が必要です、そして相手のステートに入った場合を考えてposを設定するかどうかを決めなければなりません。コモンステートの食らい状態で設定すれば問題ないのでしょうが、相手のステートから戻ってきたらと言う形で条件を入れる必要が出てくるかと思います。

摩擦によるvelの打ち消し
 普通のキャラはstand.friction>crouch.frictionなのでxについてはこの式が当てはまります。
velset = 1/const(movement.crouch.friction)-0.1,0
この式はvelの初期値が1を下回る設定と言う意味です。地上での摩擦は1未満の値を打ち消しますのでこの値を設定してもステートの終わりには0になります(但し、効果はあります)。これは常にveladdした場合も同様で1未満のvel xを設定した場合はvelが1フレーム毎に0になりposaddでx=1をしているのと等しくなります、そう言った状態になると事実上vel xが増えない事になります。
 しかし注意点があります。velset=0.1,0とした場合には動かない様に思えますが実は0.1ずつ加算されているのです。つまり一回では動かないだけで内部的には浮動小数点で管理されていると言う事です。次の様な実験をしましたstate 0にveladdを置いてみて移動するかどうかを調べました。その時のxの値は以下の3つです。

x = 0.016
x = 1/60
x = 0.00166

そんな馬鹿なと思うかも知れませんが浮動小数点で表記した方は動きましたが除算表記の方は動きませんでした。これは整数同士の除算だと整数が返る様になっているからです、そうしないと整数から整数の変数に入れる時に問題がありますので。結果的に1/60は0になっているのでそもそも動きません、しかし除算表記でも次の様にすれば動きました。

x = 1/60.0

紹介はしませんが以前色々やった時に似た様な現象があり、それに近いです。つまりこういう表記をすればとても微妙なvelも設定できると言う事です。でも何フレームか毎にpos xに足すと言うのと余り変わりませんね。


相手キャラとの衝突
 playerpushが設定されているプレイヤーと接触すると移動速度が落ちますがvelは変化しません。押し出し中も同じ速度を保ちたい場合は現在のvelを(1+(P2BodyDist x=0))の様にして倍にする必要があります。

摩擦によるvelの変化、veladd
 地上(pos y>=0)では摩擦の影響を受けます。具体的にはvel xが1以上の場合にfrictionの値が乗算されます、なのでveladdはvelsetと違い1フレーム毎に値がぐにゃっと変化していきます。

[statedef]velset=1,0
[veladd]x,y=1,0 ;(毎フレーム)

この時、
Time=0, vel x=1
Time=1, vel x=1.7
Time=2, vel x=2.295
Time=3, vel x=2.80075

1ずつ加算されればTime=3の時にvel xは4となるはずですがなんと2.80075になっています。これから解る様に地上ではvelsetとveladdでの結果が基本的に異なります。


Physics=N
さて、長々と説明してきましたがもっと根本的な解決策があります。
[statedef 0]
type = S
movetype= I
physics = N
ctrl = 1

[state 0, All states must have at least one state controller]
type = null
trigger1 = 1

こんな感じのステートを作ってやると(これだと立ち状態の変更になりますが)すぐわかります。
取りあえず最低限のステコンを一個起きました。どうなるでしょうか。(animは後で指定してみてください)

この状態でジャンプやダッシュを行うとその後ステート0に移動してニュートラルの状態になります。ニュートラル状態では先程説明した摩擦等が無いので無重力状態と同じになります。

[state 0, up]
type = velset
trigger1 = time = 30
y = -1

[state 0, down]
type = velset
trigger1 = time = 60
y = 1

さて、続いてこの2つをおいてみましょう。どうなるでしょうか。

こうすると30フレーム後に上に上がりだして60フレーム後に下がり出します。
そしてそのまま着地処理もされずに画面の下へ真っ直ぐ進んでいきます。
statetypeをAに変更しておいても着地しないので地面の下へめり込んで画面外へ消えて行ってしまいます。
この様に、Nutral状態だと地面と言う物がなくなる様です。

これなら自由に動かせそうですね。地上で滑らすのも簡単ですが今度は止まらないので注意が必要です。
それと普通のステートはvelset=0,0を設定していると思いますが、これをしてしまうとvelが維持されないので注意しましょう。

何れの方法にしてもある程度の制御は必要になります。
スポンサーサイト
line
アホジン 0.29.2
・立っている状態で死んだ時の挙動が変だったので修正しました。
・Mugen1.0に対応しました。元々ワイド画面を考慮して作っていたのですが足りないのがあったのでちょっと書き足してワイドでも大丈夫になりました。全部は無理。

readme.txt
・Mugen1.0への対応
 ahojin.defを開いてversionを1.0にしてください。画面サイズに合わせてLocalcoordを選んでください。不要な方を;でコメントアウトします。
*---------*---------*---------*---------
;mugenversion = 06,14,2003
MugenVersion = 1.0
;localcoord = 320,240 ;4:3
localcoord = 426,240 ;16:9
*---------*---------*---------*---------

ahojin.cnsを開いて一番下にあるtrigger1=0をtrigger=1に変更して下さい。
*---------*---------*---------*---------
[state -3, for mugen1.0 hitpause]
type = varset
trigger1 = 1
var(19) = -1
*---------*---------*---------*---------
こうすれば16:9(または4:3)に対応してpausetimeが補正されます。
ただ、4:3画面なら何もしなくても大丈夫です。

ahojin0292

16:9だと画面が広いです。これを見越して25:9で作って置いた
ククク・・・計画通り

次はワイド動画にしてみようかな
line
アホジン 0.28.6
 おぜう様の表示が最後まで出なかったりしていたので修正しました。ドローと時間切れ、それとパーフェクトで出ます。追加した当初はドローだけの様子見で取りあえず的な判定だったので絵を直したついでに直しました。
おおおおおおおあああああああああああおぜう様ー!
 今のところはすぐに追加する物もないのでまた構想を練ります。他のキャラも作りたいのだけどもまだこっちが終わらない。

 話は変わりますが東方キャラトーナメント(sm13899761)に出場しました。3回は戦える様ですが10Pの天人カラーじゃなくて12Pでいいのかな・・4P毎に区切ってあるのは良くあるカラー分けからすると分かり辛いので。当初はAhojinGodだったみたいですけどやっぱり重いみたいです。
line
mugendocsのCNS Formatの項目に載っていますが実際に使う場合の使い方を含めて記載してあります。
書式は リダイレクトキーワード,トリガー です。リダイレクトのリダイレクトは出来ません。次の様な書き方は不可→parent,parent,pos x

MUGEN1.0以降では、 Cond トリガーによりリダイレクトのリダイレクトを表現できます。詳しくは Cond の項目をご覧下さい。trigger1で工夫すれば互換性もあり必要ではありませんが、 Cond トリガーでデバッグモードのエラーメッセージも回避できます。

リダイレクトキーワードの一覧
parent
 値の指定無し。ヘルパーが親を参照する時に使う。自分を呼びだしたキャラクターを参照するのでヘルパーの親がヘルパーの場合もある。親はトリガーのParentDistを使い確認する。
trigger1 = ParentDist = 0 || ParentDist != 0
trigger1 = parent,pos x

root
 値の指定無し。ヘルパーがルートを参照する時に使う。普通は呼び出しの大元のプレイヤー。構造としてはroot->helper->helperの様になっているのをparentで逆に辿っていくので辿れる必要がある。parent,parentと言う表記が出来ないのでこうなっている様だ。辿れない構造の場合はenemy(n)やplayerIDから参照すれば良い。使い方はparentを参照。
trigger1 = RootDist = 0 || RootDist != 0
trigger1 = root,pos x

partner
 値の指定無し。NumPartnerで事前に確認しておかないとパートナーが居ない場合にデバッグメッセージにエラーが出る。
trigger1 = NumPartner = 1
trigger1 = partner,movetype = A

playerID(ID)
 IDトリガーで取得できるIDで省略不可。TeamsideとPartnerのID、それにEnemyの数がわかれば相手側のIDがわかる。IDはトリガーのPlayerIDExistを使いIDを確認する。
trigger1 = PlayerIDExist(var(10))
trigger1 = playerID(var(10)),pos x

enemy(num)
 numは0~1までの値で相手プレイヤーを指す、省略可能。実際にはenemy(0)は2P、enemy(1)は4Pとなるので固定されている。NumEnemyで数えてから使う。
trigger1 = NumEnemy = 2
trigger1 = enemy(0),numhelper > 0 && enemy(1),numhelper > 0
trigger2 = NumEnemy = 1
trigger2 = enemy(0),numhelper > 0

enemynear(num)
 numは0~1までの値で近くにいる相手プレイヤーを指す、省略可能。使い方はenemyを参照。
例、enemynear,pos x

helper(helperID)
 helperIDはhelperを作る時に設定したidの事で省略可能。同じidのヘルパーを複数出すとランダムで選択される為、今ひとつ使えない。よって、ヘルパー毎にIDを割り振ってあれば普通に使える。parent,var()やparentvarset辺りで通信して対応すると良さそう。

target(targetID)
 targetIDはhitdefのidの事で省略可能。targetIDを指定する場合はNumTarget(targetID)で事前にターゲットが居る事を確認してから使わないとデバッグメッセージにエラーが出る。movetypeがA(攻撃)の時に有効。俗に永続ターゲットと呼ばれるのは攻撃後もそのままの状態を保持しているだけなのでターゲット用の攻撃ステートを作っているのである。

デバッグメッセージに出るエラーの回避方法
 posにposを代入する時はfloorしないとエラーが出ます。
 partnerやtargetはリダイレクト先が居ない場合があるのでその場合にデバッグメッセージにエラーが出ます。これを回避するにはリダイレクト先が存在する事を判定してからtriggerを分けて段階的に処理します。triggerを分けないと一括して判定される為エラーメッセージの回避にはなりません。

値の設定にリダイレクトを使うだけでMUGENがエラー落ちする。
 一部の設定値にリダイレクトを使うとMUGENが落ちますが、これはリダイレクトのリダイレクトと同じでその設定値の設定が関数になっていると思われます、因って設定値の中にリダイレクトを使おうとすると意図しない二重リダイレクトが発生して保護の為に落ちると言う訳です。
これを回避する為には予め変数に値を入れて於いて、trigger1以外ではリダイレクトをしない様にします。
line
アホジン0.28.4

追加
・通訳さんを追加、空中で出せます。
・合体を追加、相手は死ぬ。

修正
・おぜう様の絵を更新。
・空中で出せるNUEFOと天人の動作を修正(特には変わりません)。
・アッパーのダメージを100から80に修正、空中で2回までしか入らない様にJuggleを4から6に修正。
・通常攻撃でのパワー増加が多かったのを修正。

 発生の遅い技が増えた事によりCPUの動きがトロくなりました。CPUの技選択を少し変えました。色々判定するAIはまだ付けていません。
 ヘルパーが合体を使うと成功しすぎるので使わない様にしましたから9-12Pでもそんなには成功しません。合体に成功すると攻撃を食らってもライフが減りません。ただし、CMDファイルのvar(11)%11を%12に変更してヘルパーが合体を使っても本体は関係ないので全画面攻撃されているとこちらが死んだりはします。





なんか文字の粗が見えるけどちょっと前のだから直ってるよね多分
立ち状態で倒れない攻撃を食らって死んでも額縁が出てこない気がするし
まだまだ追加していきます
line
こっそりとファイルだけ。
もう一個技を追加したら動画を作成する予定です。
神奈子様でエラーになる部分をちょっとだけ残しておいたらやっぱりエラーが出たので修正しました。


この位やってあれば大丈夫ですね。

細かい内容は後日。
そう言えば12,11vs10,9Pだと2:3の比率で勝利していくんですが偶然なんでしょうか。組み合わせを変えるとまた変わるんですが。
line
5-8Pは対人向けのCPUで設定はありません。

不具合修正
・ツリーがいつでも出せる不具合を修正しました。
・ツリーのコマンドは3種類有って位置指定が出来るのですが、ランダム位置になっていたので修正しました。
・神奈子様が消える時に出る事があるMUGEN本体のエラーの原因を修正しました。
どうやらDestroySelfする時にExplodを出してしまうとエラーになる様です。

追加機能
・起きあがり時(座ってマケドニアが出る所)にキャンセルで技が出せる様に修正しました。

先行入力にしようかと思ったのですが起きあがり動作が4フレームしかないので機能としてはこれでいきます。

意外にも早速ネタの分かる人に使って頂けたので作者としては嬉しい所です。
ドローの演出をパーフェクトにもつけようかな・・
そろそろあのパーフェクトネタを作ろうかな・・
D.K.O.

 タイムオーバーの勝ち負けはわかるのですがゲームのタイムカウント(99~0)の取得はステージだと思うので調べないとわかりません。そう言えばステージはまだ作っていませんね・・
 タイムオーバー時はみていなかった・・
line
おぜう様を見ていたら一日で40枚程追加してしまった・・

追加分
・ドロー時のおぜう様と天人の演出を追加しました。
・折角おぜう様の動きを作ったのでけいおん先生におぜう様を追加しました。
・5-8PをCPU用に追加しました。これで5P以上は全てAI?動作となりました。

前バージョンからの修正
・神奈子様が消える寸前に出やすかったエラーがほぼ無くなりました。
・大ちゃんの位置がずれていたので修正しました。
・けいおん先生が余りにも高い位置に出た場合に画面に入ってくる様にしました。
・投げのダメージを少し下げました。

こんな所です。




今回の動画は60fpsの一部100倍速となっています。
尺が長すぎてレートが視聴限界なんですけお・・
line
line

line
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。