☆ベルトアクション作成 Beats of rageスレッド☆ (658レス)
☆ベルトアクション作成 Beats of rageスレッド☆ http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
78: 名前は開発中のものです。 [sage] 2021/04/11(日) 00:19:43.51 ID:9LUoOlWn 上の例では見たとおりAnimの表題だけ変えて中身はほぼ一緒 anim jumpland loop 0 cancel 2 9 0 a freespecial2 delay 9 offset 33 72 frame data/chars/ciel/jmp5.gif frame data/chars/ciel/jmp5.gif frame data/chars/ciel/jmp5.gif これはジャンプの着地に攻撃(A)ボタンを押しておくとFreespecial2発動 Anim Landなんかに同じような記述しておけば、投げられ受身に 反応してFreespecialを発動なんてことも自由です。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/78
79: 名前は開発中のものです。 [sage] 2021/04/11(日) 00:32:07.96 ID:9LUoOlWn cancel 2 9 0 a freespecial2 この記述だと Frameの2〜9の間に Attackコマンドの有無に関係なく(0) aボタンが押されたら FreeSpecial2を実行 え?例ではFrameコマンド3つしか無いけど? スタートフレーム(2)は大事ですが終了フレーム(9)に関しては多すぎても 特にエラーにはならないようです。 3フレームで入力なんてきついなー、Delay 9となっているのでFrameコマンド 1つにつき100分の9秒あるんで、格闘ゲームみたいに忙しくなることはありません。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/79
80: 名前は開発中のものです。 [sage] 2021/04/11(日) 00:41:33.67 ID:9LUoOlWn 訂正 3フレームで入力 → 1フレーム Frameの数え方なんですが、コマンドでフレーム数を数える場合 どうも1番目は 0と数えるようです。 なのでFrameコマンドは 0,1,2の3フレーム Cancel コマンドの記述は 2、9とありますが9フレーム目なんてないので Cancel コマンドの判定は 2フレーム(3番目)の一つのみになります。 このFrame数を数えるのが以外に面倒で、Cancelコマンドなどは特に問題にならないのですが LandFrameやThrowFrameなど間違えるとゲームが遅延したりすることもあるので注意です。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/80
81: 名前は開発中のものです。 [sage] 2021/04/12(月) 01:07:22.51 ID:rapSeOc5 スクリプトを無理やりねじ込む didhitscript @script void main() { void self = getlocalvar("self"); void tar = getlocalvar("damagetaker"); void anims = getentityproperty(self,"animationid"); if(tar != NULL()) { if ( anims == openborconstant("ANI_ATTACK3") ||anims == openborconstant("ANI_FREESPECIAL5") ||anims == openborconstant("ANI_FREESPECIAL6") ||anims == openborconstant("ANI_FREESPECIAL7")) { tossentity(tar, 4, -1, 0); } } } @end_script 普通はSCRIPTSフォルダに〜.cな感じで入れておくのですが、 特定のEntityでしか使わない時には、 ヘッダーに上記のようにスクリプトを直接記述するという手もあります。 Didhitscript というのは、こちらの攻撃がヒットした際に参照されるScriptで この辺はOpenBoR側で規則が設定されているので、他人の使い方を参考にしたり DCマニュアルを読み込むしかないですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/81
82: 名前は開発中のものです。 [sage] 2021/04/12(月) 01:15:42.00 ID:rapSeOc5 上の例では、Void Main(){ }となっています。これは攻撃ヒット判定が行われるたび 毎回参照されるという意味になります。 C言語準拠の記述になるので、この辺の記述や演算子については、 適当にC言語 演算子などで検索してみてください。 で、内容としては、何らかのターゲットに特定(Attack3やFreespecial#)の攻撃がヒットしたら いつもより大きく吹き飛ばします(TossEntity)。 それぞれのAttackコマンドにDropvなど設定すれば同じ効果は得られますが、 このスクリプトを使う事でAnim単位で動作を変化させる事ができるのがメリット。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/82
83: 名前は開発中のものです。 [sage] 2021/04/13(火) 00:39:56.52 ID:r7OWv6Qx void EnemySpawn(float fX, float fY, float fZ) { void self = getlocalvar("self"); void vSpawn, vName; int iMHealth = getentityproperty(self,"maxhealth"); int iHealth = getentityproperty(self,"health"); int iDirection = getentityproperty(self, "direction"); int iR = rand()%10 + 10; if (iR >= 0 && iR < 4){ vName = "roxi"; } else if (iR >= 4 && iR < 8) { vName = "Yanyu"; } else if (iR >= 8 && iR < 12) { vName = "Sakura"; } else if (iR >= 12 && iR < 16) { vName = "Spiral"; } else { vName = "Heiderna"; } clearspawnentry(); setspawnentry("name", vName); if (iDirection == 0) { fX = -fX; } fX = fX +getentityproperty(self, "x"); fY = fY +getentityproperty(self, "a"); fZ = fZ +getentityproperty(self, "z"); vSpawn = spawn(); changeentityproperty(vSpawn, "position", fX, fZ, fY); changeentityproperty(vSpawn, "maxhealth", iMHealth); changeentityproperty(vSpawn, "health", iHealth); changeentityproperty(vSpawn, "direction", iDirection); } http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/83
84: 名前は開発中のものです。 [sage] 2021/04/13(火) 00:46:02.19 ID:r7OWv6Qx 上のスクリプトは、vName="Spiral"や"Sakura"など5種類の敵(Entity)を ランダムに出現させるものです。 changeentityproperty(vSpawn, "maxhealth", iMHealth); 最大HP changeentityproperty(vSpawn, "health", iHealth); 現在HP changeentityproperty(vSpawn, "direction", iDirection); 向き この辺は好みでランダム(rand()%200+ 50)とか設定しても良いでしょう。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/84
85: 名前は開発中のものです。 [sage] 2021/04/13(火) 00:50:45.59 ID:r7OWv6Qx name REnemy type Enemy health 100 nomove 1 1 nodrop 2 lifespan 1 defense all 1.0 offense all 1.0 animationscript data/scripts/REnemy.c load roxy load Yanyu load Heiderna load Sakura load Spiral anim spawn delay 10 offset 1 1 frame data/chars/misc/empty.gif @cmd EnemySpawn 0 0 0 frame data/chars/misc/empty.gif anim idle delay 100 offset 1 1 frame data/chars/misc/empty.gif これをMODELS.TXTにEntityとして設定します。 spawn REnemy alias Island_Guard map 1 coords 500 270 at 3200 そして好きなLevelのテキスト内に上のように記述すれば、そのポイント到達するたび 設定したランダムな敵(Entity)が出現するわけです。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/85
86: 名前は開発中のものです。 [sage] 2021/04/13(火) 00:57:10.12 ID:r7OWv6Qx ステージを作ってるとどうしても内容を覚えてしまったりで、 だんだんテストプレイも飽きてきますので、ちょっとした気分転換になるかな? 敵を増やしたとき、スクリプト側とモデル側を少し書き換えるだけで登場させられるので 少しだけ手間が減らせるかなと思います。 もちろんEntityでさえあれば良いので、登場させるのはNPCだってITEMだって良いわけです。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/86
87: 名前は開発中のものです。 [sage] 2021/04/13(火) 01:17:53.40 ID:r7OWv6Qx @cmd EnemySpawn 0 0 0 frame data/chars/misc/empty.gif この部分を @cmd EnemySpawn 0 0 0 @cmd EnemySpawn 40 0 0 @cmd EnemySpawn 80 0 0 frame data/chars/misc/empty.gif なんてすれば、敵が3人ずつ登場します。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/87
88: 名前は開発中のものです。 [sage] 2021/04/13(火) 01:36:45.64 ID:r7OWv6Qx Anim Blockを設定してしまうと、Special用のボタンを押すたびAnim Blockが実行されてしまい Specialは標準攻撃(A)とジャンプ(J)の同時押しで発動ということになります。 Anim Blockに攻撃モーションを設定したり、Anim BlockPainに攻撃を設定したりすれば 攻撃にもカウンターにも使えるので、想像力次第でいかようにも使えるのですが。 OpenBoR側でもともと設定された機能としてSpecialだと攻撃を受けたり、掴み攻撃を受けたり そんなときも1ボタンでSpecial発動できるメリットもあるわけです。 そんなとき意外と忘れられがちなSpecial2(レバー入れスペシャル)にガードポーズを組み込み FollowAnim#などで反撃モーションなど入れておけば、1ボタンでスペシャルの利便性を残しつつ ガードも可能になります。もっと忘れられがちなのがジャンプ中にSpecialのJumpSpecial もともとジャンプには垂直(JumpAttack)レバー上ジャンプ攻撃(Anim JumpAttack3) レバー下入れ(Anim JumpAttack2)前方ジャンプ攻撃(JumpForward、ForwardJumpと紛らわしい)に Anim RunJumpAttackと多彩な動作が可能なので、あまりJumpSpecialを使う機会は無いのですが。 ついでにコマンド設定 Com D F A Freespecial2などで、 Com B B A Freespecial なんてすると、レバー入力的には ← → Aという事になります。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/88
89: 名前は開発中のものです。 [sage] 2021/04/13(火) 18:04:23.86 ID:pM+4VIKL 一番出し辛い攻撃はRunSlideだと思う Run→→中に↓ジャンプ、自然な動作としては スライディングかなあ OpenBoRに最初から設定されているAnimは 大概過去に存在したゲームからヒントを得ているぽいね http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/89
90: 名前は開発中のものです。 [sage] 2021/04/14(水) 00:12:02.00 ID:Bl01iZfT Anim Pain @script int Crnd = (rand()%20)+10; if (frame==0 && Crnd>26) { changeentityproperty(getlocalvar("self"), "animation", openborconstant("ANI_PAIN4")); }else if (frame==0 && Crnd>18){ changeentityproperty(getlocalvar("self"), "animation", openborconstant("ANI_PAIN3")); } @end_script 例ではAnim Pain1(攻撃を受けた際のリアクション) 本来Attack2 なら Pain2…Attack4 → Pain4 など対応するAnimは固定されいてる(と思う)。 changeentityproperty(を使って強制的に別なAnim を実行させてみる。 まあ気分転換くらいなものですが、攻撃のリアクションを一つ一つ設定するのって コピペで良いとはいえ結構労力つかうんで。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/90
91: 名前は開発中のものです。 [sage] 2021/04/14(水) 00:20:22.41 ID:Bl01iZfT 上の例だと、もちろんAnim Pain3とPain4は設定しておかないと駄目です。 いろいろと検索していると、ユニティとかアンリアルとか目にしますが、 一つのゲームを完成させるとなると結構な労力になると思うのですが、 OpenBoRって基本ゲーム(BeatsOfRage)を土台にすれば、ともすれば いわゆるツクールより楽にアクションゲームを完成させることが出来ると思うんです。 やはり知名度なんでしょうか?他人のプログラムの改変であっても、一個のゲームまで いかなくてもキャラ一つでも弄ってみたら嵌ると思うんだけどなぁ スクリプトとか小難しく言っちゃうのが駄目なのかな http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/91
92: kt住江 ◆/VMXjFOJew [sage] 2021/04/16(金) 03:27:16.33 ID:kkjyE+N0 最近復活しました、kt住江です。 長らくスレから遠ざかってしまい、申し訳ありません。 現在新作としてダブルドラゴンのゲームを創意開発中です。 ↓開発中のダブルドラゴン用敵キャラ ttps://twitter.com/ktsuminoe/status/1379416846458253314/photo/1 そして、kt住江のゲーム保管庫が出来上がりましたので、 皆さま、僭越ながら宜しくお願いします。 ttps://amberusagi.theblog.me/posts/13123474 https://twitter.com/5chan_nel (5ch newer account) http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/92
93: 名前は開発中のものです。 [sage] 2021/04/18(日) 00:19:35.36 ID:FUfakm3o おつかれさまです。 早速、DLさせていただきました。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/93
94: 名前は開発中のものです。 [sage] 2021/04/18(日) 20:34:55.61 ID:FUfakm3o kt住江氏の作品はやはり流石の出来ですね。 アクションのバランスも良くて、強技出してればクリアなんて事は無く。 微妙なmodにありがちな敵に殴られる位ならスペシャル連打でいいや、なんて事が無いのが素晴らしい。 敵ごとにちゃんと対処しないと1クレジットクリア出来ない、絶妙なバランスで、とても楽しませて頂きました。 グラに関しても解像度が高ければ良いってものじゃ無いのがとても良く分かります。 http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/94
95: kt住江 ◆/VMXjFOJew [sage] 2021/04/19(月) 18:52:55.18 ID:bjKqc+m0 >>93さん DLしてくださり、ありがとうございます。 ごゆっくりと、ゲームをお楽しみください。 >>94さん ありがとうございます。そう言っていただけると、開発したかいがあります。 現在、ダブルドラゴンのゲームを開発中ですが、 2012年の『ギコタク』から続いて『カオスファイト』『コテハンファイト』 『アインバイン』『くにおくんLA』『巫女と吸血鬼』『削除隊』と7作も作ると、 流石によくある攻撃を仕掛けてくるザコ敵はともかく、 中ボス格の敵キャラのアイディアが狭まってきました。 毎回、どんな攻撃をしてくる敵キャラを出そうかというアイディアで悩んでいますので、 僭越ながら、敵キャラのアイディアを出していただけると大変助かります。 参考に開発中のダブルドラゴンの粗筋をご紹介します。 ダブルドラゴン4でリー兄弟がレネゲーズを壊滅させた数か月後・・・ 西海外の町、サンフランシスコに突如出来上がった格闘道場『フェニックス』の 稽古中を捉えた写真には、死んだはずの宿敵ウィリーの姿が映っていた。 ウィリーが蘇った真相を探るため、ダブルドラゴンはサンフランシスコへと乗り込む! http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/95
96: 名前は開発中のものです。 [sage] 2021/04/20(火) 22:57:09.31 ID:N5Bx9E2D @script { if (frame == 48) { void vEnt,self = getlocalvar("self"); int dx =100,dy=0,dz=0; int dir = getentityproperty(self, "direction"); int tgtdir = 0; if(dir==0) { dx = -dx; } setlocalvar("T"+self, findtarget(self)); void target = getlocalvar("T"+self); void TType = getentityproperty(target, "type"); tgtdir = getentityproperty(target, "direction"); if( getlocalvar("T"+self) != NULL()&&TType == openborconstant("TYPE_ENEMY")) { int Tx = getentityproperty(target, "x"); int Tz = getentityproperty(target, "z"); changeentityproperty(self, "position", Tx+dx, Tz+dz, dy); if (dir == 0) { if (Tx+dx > dx) { changeentityproperty(self, "direction", 1); } else { changeentityproperty(self, "direction", 0); } } else { if (Tx+dx > dx) { changeentityproperty(self, "direction", 0); } else { changeentityproperty(self, "direction", 1); } } } else { changeentityproperty(self, "animation", openborconstant("ANI_FAINT")); } } } @end_script http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/96
97: 名前は開発中のものです。 [sage] 2021/04/20(火) 23:12:55.15 ID:N5Bx9E2D 改行多杉かと思ったら通った。 プレイヤーの周囲にいるTYPE_ENEMYを探して、 いたらENEMYの後方100ドット(int dx=100)にテレポートする。 最初のFrame[==48というのがテレポートを実施したいFRAME数 ここをFrame==0にすれば、いきなり跳ぶ 下の方にANIM_FAINTというのがあるが、これは該当する敵が居なかったときに 移行するAnimで、別にANIM_IDLEなどでもよいし他の技でもいい。 まあ、Move 100とかしてFlipFrameで反対向きにしても、それっぽい事はできるんですけどね。 スクリプトだと結構いい感じにテレポートしてくれるんですが、 どこかに嵌ってる敵にも反応してしまいます(そのまま穴に墜落とか)。 画面の解像度数を拾って+−補正すれば良いのですが、とりあえず、 敵の座標を拾って、そこに移動(プレイヤーの座標を書き換える) 条件を満たさなければ別なAnimに移行する この辺が分かり易ければよいかなと思います。 分かり易く http://mevius.5ch.net/test/read.cgi/gamedev/1547405874/97
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 561 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s