DHQの雑記とか

mugen関連でいろいろと

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

発生が0Fの投げで掴める条件と、hitdefのトリガー類の設定について

前回は発生が0Fではない投げ技のトリガー類について解説しましたが、今回は発生が0Fの投げ技について。
対空投げやタッグへの対応については一切考慮していません。
また、ガード硬直は掴めないものとしています。
この記事を作成するにあたって、pots氏の神.人.豪.鬼の瞬.獄.殺の記述を参考にさせていただきました。

11/08/18 記述に誤字があったため修正しました
11/10/05 8月に修正を行った箇所とは別に誤字を修正しました


厳密に制御をするためには、playeridを格納しておくための本体の変数がひとつと、
常時展開されているmovetypeがIのヘルパーがひとつ必要になります。
固有ゲージやAI制御用のヘルパーなどがあれば、そのまま使うことができます。
ヘルパーのIDやステート番号、変数などは適宜調整してください。

本体の-3ステートと-2ステートで行っておく処理
[state -3, 直近敵ID取得]
type = varset
trigger1 = numenemy = 1
trigger2 = numenemy >= 2
trigger2 = enemynear(0),alive = 1
v = 0
value = enemynear(0),id
ignorehitpause = 1

[state -3, 直近敵ID取得2]
type = varset
triggerAll = numenemy >= 2
trigger1 = enemynear(0),alive = 0
v = 0
value = enemynear(1),id
ignorehitpause = 1


ヘルパー側で行っておく処理

[state 100000, 投げ確定防止スイッチリセット]
type = varset
trigger1 = 1
v = 0
value = 0
ignorehitpause = 1

[state 100000, 投げ確定防止スイッチセット1]
type = varset
triggerall = playerid(root,var(0)),ctrl = 0
trigger1 = playerid(root,var(0)),stateno = [150,153]
v = 0
value = 1
ignorehitpause = 1

[state 100000, 投げ確定防止スイッチセット2]
type = varset
triggerall = playerid(root,var(0)),ctrl = 0
trigger1 = playerid(root,var(0)),movetype = H
trigger1 = playerid(root,var(0)),stateno != [150,153]
v = 0
value = 2
ignorehitpause = 1


1.持続が1Fで仰け反りが掴めない場合
[state 1000, 投げhitdef]
type = hitdef
triggerall = p2stateno != 40
triggerall = p2stateno != [150,155]
triggerall = p2movetype != H
triggerall = !(id > playerid(var(0)),id && helper(100000),var(0) = 1 && (playerid(var(0)),stateno = 0 || playerid(var(0)),stateno = 11) && playerid(var(0)),time <= 1 && playerid(var(0)),ctrl = 1)
triggerall = !(id > playerid(var(0)),id && helper(100000),var(0) = 2 && (playerid(var(0)),stateno <= 140 && playerid(var(0)),movetype = I) && playerid(var(0)),time <= 1 && playerid(var(0)),ctrl = 1)
trigger1 = animelem = *
hitflagはM-とします。


2.持続が2F以上で仰け反りが掴めない場合
[state 1000, 空hitdef]
type = hitdef
trigger1 = animelemtime(*) >= 0
trigger1 = !(animelemtime(*) >= 0)
attr = **
hitflag =

attrは投げhitdefに合わせ、hitflagは空欄にしておきます。

[state 1000, 投げhitdef]
type = hitdef
triggerall = p2stateno != 40
triggerall = p2stateno != [150,155]
triggerall = p2movetype != H
triggerall = !(id > playerid(var(0)),id && helper(100000),var(0) = 1 && (playerid(var(0)),stateno = 0 || playerid(var(0)),stateno = 11) && playerid(var(0)),time <= 1 && playerid(var(0)),ctrl = 1)
triggerall = !(id > playerid(var(0)),id && helper(100000),var(0) = 2 && (playerid(var(0)),stateno <= 140 && playerid(var(0)),movetype = I) && playerid(var(0)),time <= 1 && playerid(var(0)),ctrl = 1)
trigger1 = animelemtime(*) >= 0
trigger1 = !(animelemtime(*) >= 0)
hitflagはM-とします。

ある1Fだけでhitdefを実行するのではなく、
攻撃判定の持続中は常にhitdefを実行し続けるようにします。


3.持続が1Fで仰け反りが掴める場合
[state 1000, 投げhitdef]
type = hitdef
triggerall = p2stateno != 40
triggerall = p2stateno != [150,155]
triggerall = !(id > playerid(var(0)),id && helper(100000),var(0) = 1 && (playerid(var(0)),stateno = 0 || playerid(var(0)),stateno = 11) && playerid(var(0)),time <= 1 && playerid(var(0)),ctrl = 1)
trigger1 = animelem = *
hitflagはMとします。


4.持続が2F以上で仰け反りが掴める場合
[state 1000, 空hitdef]
type = hitdef
trigger1 = animelemtime(*) >= 0
trigger1 = !(animelemtime(*) >= 0)
attr = **
hitflag =

attrは投げhitdefに合わせ、hitflagは空欄にしておきます。

[state 1000, 投げhitdef]
type = hitdef
triggerall = p2stateno != 40
triggerall = p2stateno != [150,155]
triggerall = !(id > playerid(var(0)),id && helper(100000),var(0) = 1 && (playerid(var(0)),stateno = 0 || playerid(var(0)),stateno = 11) && playerid(var(0)),time <= 1 && playerid(var(0)),ctrl = 1)
trigger1 = animelemtime(*) >= 0
trigger1 = !(animelemtime(*) >= 0)
hitflagはMとします。


相手の拡大したくらい判定を掴めないようにする場合は、p2bodydist Xによる条件を加えます。
p2dist Xを条件に加えると、相手の横幅が広い場合、絶対にhitdefが実行されなくなってしまいます。

また、「相手が仰け反り中や空中にいる場合、投げ用ステートへの移行自体が行われない」ようにするためには、
cmdファイルにある投げ用ステートへのchangestateのトリガーを以下のように記述します。
[state 1000, 投げ]
type = changestate
triggerall = p2stateno != 40
triggerall = p2stateno != [150,155]
triggerall = p2movetype != H
triggerall = p2Statetype = S || P2statetype = C
trigger1 = *

triggerall = !(id > playerid(var(0)),id && helper(100000),var(0) = 1 && (playerid(var(0)),stateno = 0 || playerid(var(0)),stateno = 11) && playerid(var(0)),time <= 1 && playerid(var(0)),ctrl = 1)
および
triggerall = !(id > playerid(var(0)),id && helper(100000),var(0) = 2 && (playerid(var(0)),stateno <= 140 && playerid(var(0)),movetype = I) && playerid(var(0)),time <= 1 && playerid(var(0)),ctrl = 1)
は、適宜追加してください。

ただしこのような記述を行うと、「相手が空中判定になっている間に発生の遅い投げ技を予め出しておき、
着地硬直に持続を重ねて投げを確定させる」ということができなくなります。

cmdファイルにp2bodydist Xによる条件を加えれば、
「ある距離より近くにいないと投げ用ステートへの移行自体が行われない」ようにすることができます。

  1. 2011/08/18(木) 01:32:38|
  2. キャラ製作の豆知識
  3. | トラックバック:0
  4. | コメント:0
<<プレイヤー操作動画上げてみました その16 | ホーム | プレイヤー操作動画上げてみました その15>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dhq.blog137.fc2.com/tb.php/32-c57a38e2
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

DHQ

Author:DHQ

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (0)
お知らせ (2)
mugenの仕様 (16)
mugenのAI (3)
キャラ製作の豆知識 (31)
動画について (32)

FC2カウンター

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR

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