HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0524
Dice-K(学生につき返信遅)敵が自分を追いかけるようにするには?15解決


Dice-K(学生につき返信遅)

リンク

2016/5/24(Tue) 21:51:45|NO.75571

現在、パックマンを作成しているのですが、敵が自分を追いかけるようにするには
どのようなスクリプトにすればよいでしょうか?
また、パックマンには追尾型のほかに待ち伏せ型もあるそうなので、
そちらもお教えいただけると幸いです。



この記事に返信する


スペース

リンク

2016/5/24(Tue) 22:55:00|NO.75573

自分の座標に敵の座標を近づければ良いのでは?
ってだけだと投げやりな回答なので・・・
http://hsp.tv/play/pforum.php?mode=pastwch&num=62146
「2点の間の距離を求める方法」を貼っておきます。



スペース

リンク

2016/5/24(Tue) 22:57:41|NO.75574

連投すみません。
近づき方が一定ではなく変化を付けたいなら、
「一体時間毎に距離を半分にする」というやり方がおすすめです。
例えばこのページの二分法など。
https://goo.gl/OHc0eN



Dice-K(学生につき返信遅)

リンク

2016/5/24(Tue) 23:02:12|NO.75575

ありがとうございます。参考にさせていただきます。
あと、本来の質問とは関係ないのですが、

>○○さん
返信はどうすればいいのでしょうか?



Dice-K(学生につき返信遅)

リンク

2016/5/24(Tue) 23:03:38|NO.75576

連投すみません
先ほどの質問ですが、確認したところ出来ていました。



Dice-K(学生につき返信遅)

リンク

2016/5/24(Tue) 23:03:43|NO.75577

連投すみません
先ほどの質問ですが、確認したところ出来ていました。



GENKI

リンク

2016/5/24(Tue) 23:30:08|NO.75578

パックマンということなのでシューティングのように単純に自機までの直線距離を詰める方法を取れません。
迷路だから壁がありますからね。

追尾型
敵の視野内に自機が入ったら、最後に見た自機の位置まで敵を移動させる。
という感じでいいんじゃないでしょうか。細かいところを補足すると…
・敵の視野は、敵がいる通路上でまっすぐ見渡せる範囲。(壁や曲がり角のところまで)
・敵は1マス移動するごとに自機の位置を確認する。
・自機を見つけるまではランダムに角を曲がりながら進む。
という感じ。
本物のパックマンがどういう動きだったか忘れたので思いつくまま書いてみました。多分本物も似たような感じだと思います。

待ち伏せ型
まずどこかにじっとしていて、自機が見えたら追尾型と同じ動きをする感じでしょうか。
どいういう動きを求めているかよくわからないのでコレぐらいしか言いようがありません。

ポイントは敵の視野範囲の処理ですかね。



Dice-K(学生につき返信遅)

リンク

2016/5/24(Tue) 23:46:20|NO.75579

>GENKI
助言ありがとうございます。
考え方は私も同じようなものを考えていたのですが、
実際に式を立てるとなると、さっぱり思いつかず困っていました。
具体的な式でなくても、簡易式等お教え願います。
あと、待機型はまったくわかっていなかったので、参考にさせていただきます。



Dice-K(学生につき返信遅)

リンク

2016/5/24(Tue) 23:46:25|NO.75580

>GENKI
助言ありがとうございます。
考え方は私も同じようなものを考えていたのですが、
実際に式を立てるとなると、さっぱり思いつかず困っていました。
具体的な式でなくても、簡易式等お教え願います。
あと、待機型はまったくわかっていなかったので、参考にさせていただきます。



スペース

リンク

2016/5/24(Tue) 23:53:11|NO.75581

なぜこんな的外れな回答をしたのか、自分でも謎。
パックマンという部分を完全に見逃していました。
とりあえず使えそうなのが迷路のアルゴリズムですね。
「hsp 迷路 最短ルート」で検索してみたところ、
http://hsp.tv/play/pforum.php?mode=pastwch&num=64821
こんなスレッドが。何かの参考になれば幸いです。



GENKI

リンク

2016/5/25(Wed) 00:16:00|NO.75583

まずはマップ上の敵の位置。これがそのまま1個目の敵の視野範囲内のマスになる。
敵の位置から上下左右の4マスとの間に壁があるかどうかを調べる。
壁がないマス目は敵の視野範囲として加える。
新たに加わった視野範囲の隣(上方向なら上に範囲を伸ばしていく。右方向なら右に…。)のマスとの間に壁があるか調べる。
壁がないマス目は敵の視野範囲として加える。
視野範囲が広がらなくなるまで繰り返す。

判明した敵の視野範囲内に自機が居るか確認する。(視野範囲を調べながら調べても良い。)

自機を見つけたら、敵の移動目的地として場所を覚えておく。
(敵は自機を見失っても、まずは移動目的地に移動する。)


> こんなスレッドが。何かの参考になれば幸いです。
パックマンみたいな古いゲームでも最短経路探索やってるのかな。
なんだか、すごく強くなって絶対勝てなくなりそう。これはこれで面白そう。


>> NO.75579,NO.75580
同じ内容の連続投稿が続きますね。反応が遅いからって何度も送信ボタン押していませんか?
投稿ミスの削除はすぐがいいですよ。遅いとこのようにレスがついてしまいます。



さか

リンク

2016/5/25(Wed) 21:19:09|NO.75586

モンスターの動きはよくできてますよね。
基本的な動きは以下です。(一部、勝手な解釈です)
・アカベエ 追いかけ パックマンの位置へ向かう
・ピンキー 待ち伏せ パックマンの進行方向の先へ向かう
・アオスケ 気まぐれ アカベエとパックマンの点対称へ向かう
・グズタ  おとぼけ 遠い場合はパックマンに向かい、近い場合は自分の場所へ向かう
その他、一定時間で追いかけモードと休憩モードがあったり、進めない場所、すり抜け
等あります。
動くとこだけですがhspで作って公開してるのがあります。
(更に6匹にしてみてますが。)
よければ参考にしてください。
http://www6.airnet.ne.jp/s-shin/



Dice-K(学生につき返信遅)

リンク

2016/5/25(Wed) 22:06:19|NO.75587

>>スペースさん
ありがとうございます。紹介していただいたスレッドを確認したのですが、
肝心のスクリプトがなく、友人とアルゴリズムの相談をしているところです。

>>GENKIさん
待ち伏せ型についての助言は参考にさせていただきます。
迷路の最短ルート探索はどのように作ればよいでしょうか?
スペースさん紹介のスレッドも確認したのですが、わかりませんでした。
「マップの最短ルート探索・移動」という別スレッドを立てさせていただきますので、
そちらでも引き続きお願いします。

>>さかさん
紹介いただいたサイトを拝見しましたが、肝心の追尾に関する
アルゴリズムが見当たらないような...
できれば、上記の別スレッドの方で引き続き助言願います。



GENKI

リンク

2016/5/26(Thu) 00:53:51|NO.75590

> 迷路の最短ルート探索はどのように作ればよいでしょうか?

これについてはいろんな手法が存在します。
HSPにかぎらずよく取り上げられるアルゴリズムなので、HSPにこだわらずに探せば解説しているサイトとか見つかるんじゃないでしょうか。
専門書なんかでも解説がありますね。実装は初心者向きではないと思います。
しかし、パックマンでこれやられるとほんと逃げられる気がしないんですが大丈夫なのかな…と。面白そうだけど。やってみないとわかりませんね。

簡単に実装できないのに、効果が疑わしい場合は実装見送りの検討をおすすめします。費用対効果というやつですね。
作る前にあれこれ悩むよりも、妥協した完成品をたくさん作ってレベル上げてから再挑戦することをおすすめします。

尚NO.75583で説明している方法では、敵の現在位置から敵の移動目的地までは必ず直進で到達できるので、最短も何もという感じです。



Dice-K(学生につき返信遅)

リンク

2016/5/26(Thu) 21:15:05|NO.75599

>GENKIさん
わかりました。他の言語で解読できるものがないか探してみます。



Dice-K(学生につき返信遅)

リンク

2016/5/26(Thu) 23:04:09|NO.75607

みなさんの意見、参考にさせていただきます。
他スレッドでも質問させていただいてますので、お手空きの際にでも
またお願いします。



ONION software Copyright 1997-2023(c) All rights reserved.