☆ベルトアクション作成 Beats of rageスレッド☆ (654レス)
☆ベルトアクション作成 Beats of rageスレッド☆ http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
137: 名前は開発中のものです。 [sage] 2021/05/12(水) 00:57:58.28 ID:z4QIhI5l 近くにいる敵に向かって進む @script if(frame==6) { float Velx=2, Velz=1, dx=0, dz=0; void self = getlocalvar("self"); int dir = getentityproperty(self, "direction"); float x = getentityproperty(self, "x"); float z = getentityproperty(self, "z"); if (dir == 0) { dx = -dx; } setlocalvar("T"+self, findtarget(self)); if( getlocalvar("T"+self) != NULL()) { void target = getlocalvar("T"+self); float Tx = getentityproperty(target, "x"); float Tz = getentityproperty(target, "z"); if(Tx < x){ changeentityproperty(self, "direction", 0); } else { changeentityproperty(self, "direction", 1); } 続く http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/137
138: 名前は開発中のものです。 [sage] 2021/05/12(水) 01:03:15.13 ID:z4QIhI5l 続き x = x+dx; z = z+dz; float Disx = Tx - x; float Disz = Tz - z; if(Disx < 0){ Disx = -Disx; } if(Disz < 0){ Disz = -Disz; } if(Disz < Disx) { if(Tx < x){ setlocalvar("x"+self, -Velx); } else { setlocalvar("x"+self, Velx); } setlocalvar("z"+self, Velx*(Tz-z)/Disx); } else { if(Tz < z){ setlocalvar("z"+self, -Velz); } else { setlocalvar("z"+self, Velz); } setlocalvar("x"+self, Velz*(Tx-x)/Disz); } } else { setlocalvar("z"+self, 0); if(dir==0){ setlocalvar("x"+self, -Velx); } else { setlocalvar("x"+self, Velx); } } float Vvx = getlocalvar("x"+self); float Vvz = getlocalvar("z"+self); if( Vvx!=NULL() && Vvz!=NULL() ) { changeentityproperty(self, "velocity", Vvx, Vvz); } } @end_script 近くにいる敵をFindtargetして座標を割り出し、自分の座標と比較して 向きと距離から計算して、敵のいる方向にVelocity(慣性とでもいいますか、強制移動)させるというもの http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/138
139: 名前は開発中のものです。 [sage] 2021/05/12(水) 01:15:27.65 ID:z4QIhI5l >>137 で(Frame==6)とあるようにAnim のFrame 7番目(1番は0なので)で実行されます。 frame 7番目にAttackコマンドが記述してあれば、攻撃判定を持ったまま移動します。 勢いは Velx(横方向)Velz(奥行き)dx、dzはスタート位置をずらしたりの調整(0でOK) 適当なFrameで@cmd changeentityproperty getlocalvar("self") "velocity" 0 0 0として 止めてあげます。 利点は、奥や手前の敵にホーミング攻撃できる! 問題点はFindtarget(OpenBoRに最初から用意されてるコマンド)が結構雑で思った敵に行かない所でしょうか 一対一の格闘ではないですし、現在画面内にいる敵をカウントして自分との距離を算出するなんて 想像しただけで気が遠くなるので、コマンドを用意してくれてる公式に感謝です。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/139
140: 名前は開発中のものです。 [sage] 2021/05/12(水) 01:48:22.25 ID:z4QIhI5l >>136 さん 同士討ちの原因は簡単で candamage player enemy candamage(Attackコマンドの攻撃判定が有効になる対象) player(そのままプレイヤー) enemy(TYPE_ENEMYと設定されたentity)なので これが記述されていると同士討ちになる訳です。 特別スクリプトを使わずに、OpenBoRの基本設定でなんとできるかな?と試しただけなので穴だらけです。 丁寧に処理するには、OnDoAttack(Entityが攻撃コマンド実行時に処理されるスクリプト)か AnimationScript(Entityが何かするたび処理)辺りで設定してみるか、 @scriptでうまいこと座標の重なりを検知できれば良いのですが、 攻撃対象を検知(FindTarget)するのはあるんで、きっと存在はしてる筈なのですが http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/140
141: 名前は開発中のものです。 [sage] 2021/05/12(水) 01:56:59.21 ID:z4QIhI5l >>134 で苦労の割りにと書いたのは、場合によっては全ての敵にAnim Pain6などリアクション設定しないと あまり効果が出ないので、同じ種類の敵でもSpeed(移動速度)をランダムにしてみる。 などのステータスを弄ってみたほうが楽かなと思いました。 srand(seed) set a seed for random number generator まだ使った事ないですが、こんなコマンドもあるようなので試してみようと思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/141
142: 名前は開発中のものです。 [sage] 2021/05/12(水) 15:39:00.17 ID:z4QIhI5l スクリプトばっかりで意味がわからん、という方も多いかと思います。 スクリプトはあくまで味付けなので、殆どのMODはOpenBoRの基本コマンドだけで作られていますので もし、たとえばOpenBoR STATSに触れる機会があったら、+LEVELSをクリックしていってみて spawn Bob health 50 coords 500 200 at 0 こんな感じの所をコピペで増やしてみたり +PLAYERをクリックしていってHealth 100などとあったら300にしてみたり ちょっとづつ出来合いのものを変えてみてはいかがでしょう? でもちょっと味付けを変えてみようかな?と思ったら Chrono Crash 公式?サイトから OpenBOR >Help & Resources >Scripting >Scripts Index とたどっていって Bloodbane's Simple Scriptsあたりを見てみると大量に実例とファイルが用意されているので 覗いてみると泥沼に嵌るかもしれません。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/142
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.019s