コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
シャドウ ◆0xMqAP8/8KMR
2018/3/14 20:46
質問
敵を動かしたいです。初心者です。
私はローグライク風RPGを作ろうと奮闘しています。未熟ながら、主人公的なものを表示し、ボタン入力で任意に移動できるようにし、武器を持たせ、攻撃も可能にしました。次に敵を表示させたはいいものの、近づくと攻撃したり、動きまわるような敵の挙動を再現したいのですが、全然思いつきません。私はかなり初心者なので専門的なことなど理解できないかもしれませんが、教えていただけるとうれしいです。よろしくお願いします。

コメント

アバター
こういち 2018/3/14 20:53 ◆ou0jbJnEJ0Kb
近づくと攻撃したりするには近いか遠いかを判定する必要があります。
IF プレイヤーが近くに居る THEN
 攻撃したり動き回ったり
ENDIF
こんな感じにしたい
アバター
こういち 2018/3/14 20:55 ◆ou0jbJnEJ0Kb
自分と敵の距離を得るには自分と敵の座標が要ります。
ここでは自分の座標をMX,MY
敵の座標をEX,EYとでも置きましょう。
アバター
こういち 2018/3/14 21:00 ◆ou0jbJnEJ0Kb
ちょっと難しいですが、自分と敵の距離は「三平方の定理」というものを使って
SQR((MX-EX)*(MX-EX)+(MY-EY)*(MY-EY))
という式で表せます。
あとは
DIST=SQR((省略)
とでも置いておいて
IF DIST<=32 THEN
 攻撃したり動き回ったり
ENDIF
とすればOKです。
アバター
キルル2 2018/3/14 21:07 ◆rGE712Ruejv7
いいねー頑張ってねー
アバター
キルル2 2018/3/14 21:10 ◆rGE712Ruejv7
簡単な敵の動かし方を教えます
1、プレイヤーを動かしてる処理をコピペ
2、プレイヤーは入力に応じて動いている(はずである)から、そこをいじる
3、終わり
アバター
moi 2018/3/14 22:41 ◆hL/XpFV8MD2F
プレイヤーの位置がMX,MY、敵の位置がTX,TYとすると
TX=TX-(MX<TX)+(MX>TX)
TY=TY-(MY<TY)+(MY>TX)
SPOFS 敵SPの管理番号,TX,TY
でもいけるよ
アバター
でんぺん 2018/3/15 9:43 ◆HfSy5ayxtyTa
範囲検索や追尾については他の人も書いてるので割愛して、実際に敵の動きを作るときには簡易的な敵AI的な処理が必要になると思いますね。

その時は状態管理をするのがいいと思います。例えば的の状態変数(state)が、
0: 停止
1: ランダム移動
2: 追尾
みたいにしたとして、通常は停止かランダム移動をしていて、一定の範囲に入ったら追尾に切り替わる、そして一定の範囲外に出た(逃げ切った)ら、またランダム移動にする、などです。

他にも通常はルート巡回(警備)的に移動する、など方法は色々あると思います。

ランダム移動の際は、単純に毎フレームランダムだとその場で震えるような動きになる可能性が高いので、進路方向(向いてる方向)に数歩(ランダム)進んだら、また次の進路方向(ランダム)を決める、みたいな感じにすれば、一定距離は同じ方向に進むので震えるような動きにはならないです。
アバター
シャドウ 2018/3/15 18:34 ◆0xMqAP8/8KMR
コメントしてくださった方々、ありがとうございます!分かりやすく、詳しい説明のおかげでやっと満足できる敵が作れそうです!
アバター
みどり 2018/3/23 18:53 ◆UuFOYlGswjhS
本当に簡単な事をします。まずRNDで移動させたい方向の数を指定します。
そして割り当てていきます。
SPCOLで当たり判定を大きめに取り、実際にSPHIT系の命令で取り、当たった時に攻撃をさせれば完成です。
アバター
moi 2018/4/8 14:33 ◆hL/XpFV8MD2F
↑SPCOLはそのSPSETの幅(シャドウさんのを見る限り16×16かな?)までしか当たり判定が取れないので、当たり判定を大きめに取ることはできません。
ですが、それと同等のことは出来ます。
シャドウさん、背景はBGでやっていますか?もしBGであれば、GSPOITでいけます。
BGを置いたあと、BGOFS 0,0,0,-256と書きます。
そのあと
GPRIO 1024
GFILL TX-48,TY-48,TX+48,TY+48,#GREEN
IF GSPOIT(MX,MY)==#GREEN THEN
TX=TX-(MX<TX)+(MX>TX)
TY=TY-(MY<TY)+(MY>TX)
SPOFS 1,TX,TY
ENDIF
(敵の管理番号=1
自分の管理番号=0
自分の座標=MX,MY
相手の座標=TX,TYとする)
アバター
みどり 2018/4/9 6:58 ◆UuFOYlGswjhS
SPCOLってそんな仕様だったんですね。

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -