スポンサーサイト

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

どうしよう

別府です。

コントローラーが壊れました。
ボタンはきくのですが、レバー部分、特に斜め下を全く受付ません。
私は3つのコントローラーを持っていたのですが、これで全て故障したことになります。

自分のプレイしたいゲームが出来ないのはまだいいんです。
最近はほとんどゲームをやってませんでしたし。
暇つぶしに格闘ゲームはしてましたけど、それも本気で上達しようとやっていたわけではないですので。
何が一番困るって、キャラ作成が非常にやり辛くなることですよ。

これはもう新しいコントローラーを買うしかないのか!?

何にせよ、京98UMの完成に一歩遠のいたな・・・。
スポンサーサイト

テーマ : mugen
ジャンル : ゲーム

MAX大蛇薙ぎ完成

相変わらず京98UMをマイペースに作っている別府です。
今日はMAX大蛇薙ぎが一応完成しました。

mugen0.jpg

「MAX大蛇薙ぎぐらい余裕で完成するだろ~」と舐めて作業にかかったら、かなり苦戦しました。
もっと早く寝るハズが・・・。

「それぐらい今まで何度も作っているはずなのになんで?」と疑問に思われた方、
もちろんちゃんと理由があります。

ちょっと制作的な話になってしまいますけど、MAX大蛇薙ぎの飛び道具を作るにあたって、今まで大抵の京はhitdefを使っていたんですね。
ふつう飛び道具はProjectileという命令で作るのですが、大蛇薙ぎは本体に攻撃判定(飛び道具判定)が付いて前進するという独特な飛び道具であるために、hitdefのの方が処理が簡単だからです。

しかし飛び道具をhitdefで作ると、対戦中などにまれに不具合が生じる場合があります。
例えば、AIが飛び道具を飛び道具とちゃんと認識できなかったり。
そういう不具合が嫌で、今回私は大蛇薙ぎをProjectileで作ることにしたわけです。

実際作るに当たって処理の案はいくつかありましたけど、最も慣れている方法で作ってみたら、これが上手くいかないんですよ。

理由はいくつかありましたけど、処理を困難にしている一番の原因は、MAX大蛇薙ぎは「別々の攻撃判定が3つ連なって出、しかも一つがヒットしたからと言って、攻撃判定が消失しない」という部分でした。

仕方ないからvarを使ったり色々試行錯誤してみたけど、やはりだめ。
結局いくつかあった案のうち、3つも試すハメになりました。

あんまり綺麗な記述じゃないけれど、もういいや。

次は無式。
まだまだキャラの完成には時間がかかりそうです。


全く参考にならないオマケ
MAX大蛇薙ぎの没案その一

大蛇薙ぎとMAX大蛇薙ぎを一つのステートに書き込んでみました。
(一つと言いつつ、MAX大蛇薙ぎには結局3つのヘルパーを使っていますけど。)
これでもう少し頑張れば、美しい処理が出来そうだと思いますが、面倒なのでやめました(笑)。

;----------------------------------------------
;MAX裏百八式・大蛇薙攻撃
[Statedef 3110]
type = S
movetype = A
physics = S
anim = 3110

~略~


[State 1000,4]
type = helper
trigger1 = AnimElem = 6 = 1
stateno = 3050
id = 3050
name = "Orochinagi"
pos = 0,0
postype = P1
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
persistent = 0

[State 1000,4]
type = helper
trigger1 = AnimElem = 8 = 6
stateno = 3050
id = 3050
name = "Orochinagi2"
pos = 15,0
postype = P1
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
persistent = 0

[State 1000,4]
type = helper
trigger1 = AnimElem = 9 = 1
stateno = 3050
id = 3050
name = "Orochinagi3"
pos = 30,0
postype = P1
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
persistent = 0


;----------------------------------------------
;大蛇薙ぎ飛び道具ヘルパー
[Statedef 3050]
type = A
physics = N
movetype = A
anim = 9999
ctrl = 0
velset = 0,0
sprpriority = 3

[State 3050, Assert]
type = AssertSpecial
trigger1 = 1
flag = noshadow
ignorehitpause = 1

[State 3050, BindToParent]
type = BindToRoot
trigger1 = name = "Orochinagi"
trigger1 = 1
pos = 0,0
ignorehitpause = 1

[State 3050, BindToParent]
type = BindToRoot
trigger1 = name = "Orochinagi2"
trigger1 = 1
pos = 15,0
ignorehitpause = 1

[State 3050, BindToParent]
type = BindToRoot
trigger1 = name = "Orochinagi3"
trigger1 = 1
pos = 30,0
ignorehitpause = 1

[State -2, VarSet]
type = VarSet
trigger1 = time = 0
var(1) = 0
ignorehitpause = 1

[State -2, VarSet]
type = Varadd
trigger1 = root,ProjContactTime(3050) = 1
var(1) = 1
ignorehitpause = 1

[State 3050, Projectile]
type = Projectile
trigger1 = root,Stateno = 3010
trigger1 = !var(1)
trigger1 = time >= 1
attr = S, HP
ProjID = 3050
projanim = 3020
projshadow = 68,68,68
projhits = 1
projmisstime = 0
Projhitanim = -1
projremanim = -1
projcancelanim = -1
projremovetime = 1
projmisstime = 0
projpriority = 7
projsprpriority = 3
offset = 0,0
velocity = vel X, vel Y
hitflag = MAF
damage = 336,10
getpower = 0,0
givepower = 15,15
animtype = Heavy
guardflag = MA
pausetime = 0,11
pausemovetime = 0
sparkno = S6001
guard.sparkno = S6012
sparkxy = 20,-80
hitsound = S14,7
guardsound = S2,8
air.type = Low
ground.type = Low
ground.slidetime = 12
ground.hittime = 12
ground.velocity = -4,-6
air.velocity = -4,-6
airguard.velocity = -7,-2
guard.hittime = 16
guard.velocity = -9
ground.cornerpush.veloff = 0
guard.cornerpush.veloff = 0
air.cornerpush.veloff = 0
yaccel = .5
air.juggle = 16
fall = 1
air.fall = 1
fall.recover = 0
air.recover = 0
forcestand = 1
palfx.time = 56
palfx.add = 40,-70,-200
palfx.sinadd = 40,30,0,10
palfx.color = 0
palfx.invertall = 1
ID = 3050
nochainID = 3050


[State 3050, Projectile]
type = Projectile
triggerall = root,Stateno = 3110
trigger1 = !var(1)
trigger1 = time >= 1
attr = S, HP
ProjID = 3050
projanim = 3021
projshadow = 68,68,68
projhits = 1
projmisstime = 0
Projhitanim = -1
projremanim = -1
projcancelanim = -1
projremovetime = 1
projmisstime = 0
projpriority = 7
projsprpriority = 3
offset = 0,0
velocity = vel X, vel Y
hitflag = MAF
damage = ifelse((root,var(8) = 0),286,(ifelse((root,var(8) = 1),143,72))),10
getpower = 0,0
givepower = 15,15
animtype = Heavy
guardflag = MA
pausetime = 0,11
pausemovetime = 0
sparkno = S6001
guard.sparkno = S6012
sparkxy = 20,-80
hitsound = S100,0
guardsound = S2,8
air.type = Low
ground.type = Low
ground.slidetime = 12
ground.hittime = 12
ground.velocity = -4,-6
air.velocity = -4,-6
airguard.velocity = -7,-2
guard.hittime = 16
guard.velocity = -9
ground.cornerpush.veloff = 0
guard.cornerpush.veloff = 0
air.cornerpush.veloff = 0
yaccel = .5
air.juggle = 0
fall = 1
air.fall = 1
fall.recover = 0
air.recover = 0
forcestand = 1
palfx.time = 56
palfx.add = 40,-70,-200
palfx.sinadd = 40,30,0,10
palfx.color = 0
palfx.invertall = 1
ID = 3050
nochainID = 3050

[State 3000, PlaySnd]
type = PlaySnd
trigger1 = root,Stateno = 3110
trigger1 = root,var(8) = 1
trigger1 = time = 1
value = 14,7
volume = 0

[State -2, ParentVarset]
type = ParentVarset
triggerall = winko = 0
trigger1 = root,Stateno = 3010
trigger1 = root,Projhittime(3050) = 1
ignorehitpause = 1
var(11) = 38

[State 3050, DestroySelf]
type = DestroySelf
trigger1 = root,Stateno = 3010
trigger1 = time >= 16
trigger2 = root,Stateno = 3110
trigger2 = ifelse((name != "Orochinagi3"),time >= 14,time >= 16)
trigger3 = root,Stateno != 3010
trigger3 = root,Stateno != 3110
trigger4 = time >= 1
trigger4 = root,NumprojID(3050) = 0

テーマ : mugen
ジャンル : ゲーム

プロフィール

社長&別府

Author:社長&別府
不定期日記

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブログ内検索
RSSフィード
リンク
ブロとも申請フォーム

この人とブロともになる

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