自動追尾弓を作成する上での質問/作成に関するヒント募集

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.285118)

自動追尾弓を作成する上での質問/作成に関するヒント募集

投稿記事by ONP » 2016年10月08日(土) 19:12

環境:spigot-1.8.8.jar

こんにちは
今回サーバーに追加する要素として自動的に追尾する弓を追加しようと思っていまして
とりあえずBukkit/Spigotで検索をかけましたら
https://www.spigotmc.org/resources/homingarrow.5237/
このようなプラグインが見つかりました
このプラグインの仕様としては
1.何らかの条件(現在解明できていません)でPlayerにTargetが設定される
2.そのプレイヤーの方向に向かって弓が飛んでいく

このような仕様になっていると思われます(間違えている可能性もあります、ソースコードが公開されていないようなので憶測です)

しかし問題点があります
まずこれはバグであると思うのですが
被害者(victim)側のプレイヤーが剣でガードを行うと矢が空中で止まってしまうというものです(これは説明が難しいのでやっていただいたほうが早いかもしれません)
ガードしているとcancel eventされるというよりはなんらかの不具合でplayerを認識できていないような感じです

そしてこれは仕様の問題なのですが弓を打つ前にTargetを決めてしまうので、当然矢はPlayerまで最短距離で進もうとします
なので山越しに矢を打とうとしても山にぶつかってしまうんですよね(添付ファイルを見ていただけるとわかりやすいと思います)

この二つの問題からこちらのプラグインをそのまま使うということはサーバー的にNGなので
新しくPluginsを作る、もしくは現存のプラグインを改良するということになりそうなんですね。

そして先ほど言った山にぶつかってしまう問題の解決策として私はこのような考えがあります

弓を打つ前にTargetを決めるのではなく、飛んでいる矢の半径何マス以内にいるプレイヤー(自分を除く)にHomingを行うというようなものです
弓本来の軌道を壊すことなく、なおかつホーミング機能をつけられるのでいい発想なのではないかと思うのですが、、
https://www.youtube.com/watch?v=yBKjvSsG0Cw
挙動としてはこの動画の3:20辺りのような感じにしたいと思っています

ごちゃごちゃしてきたので整理をすると
・矢の半径何マスという定義でTargetを決める
・弓本来の挙動は壊したくない

他に追加しようと考えているのは
・name、もしくはloreでこのアイテムと認識させる(Recipemanagerなどで作れるようにするため)
・Homingが発動するのは%で
・恐らく通常の弓と曲がった後の弓は違うものなのでダメージも違うと思うので、そこの調整をできるようにする(これは後々追加でもokです)

ここまで複雑なPluginsを作成依頼とは流石に図々しいと思うので案だけでも構いません。
これは補足ですが僕はplugins製作に関しては詳しくないので作成に関しては僕の知り合いが担当するので返信が遅れる・支離滅裂なことを言ってしまうことがありますがご了承ください

なにか疑問点などがありましたら質問ください。
それでは長文失礼しました
添付ファイル
image.jpg
ONP
ID:f49e354d
石掘り
 
記事: 131
登録日時: 2015年8月12日(水) 22:45

  • (PostNo.285179)

Re: 自動追尾弓を作成する上での質問/作成に関するヒント募集

投稿記事by zyando123 » 2016年10月09日(日) 05:36

ONP さんが書きました:環境:spigot-1.8.8.jar

こんにちは
今回サーバーに追加する要素として自動的に追尾する弓を追加しようと思っていまして
とりあえずBukkit/Spigotで検索をかけましたら
https://www.spigotmc.org/resources/homingarrow.5237/
このようなプラグインが見つかりました
このプラグインの仕様としては
1.何らかの条件(現在解明できていません)でPlayerにTargetが設定される
2.そのプレイヤーの方向に向かって弓が飛んでいく

このような仕様になっていると思われます(間違えている可能性もあります、ソースコードが公開されていないようなので憶測です)

しかし問題点があります
まずこれはバグであると思うのですが
被害者(victim)側のプレイヤーが剣でガードを行うと矢が空中で止まってしまうというものです(これは説明が難しいのでやっていただいたほうが早いかもしれません)
ガードしているとcancel eventされるというよりはなんらかの不具合でplayerを認識できていないような感じです

そしてこれは仕様の問題なのですが弓を打つ前にTargetを決めてしまうので、当然矢はPlayerまで最短距離で進もうとします
なので山越しに矢を打とうとしても山にぶつかってしまうんですよね(添付ファイルを見ていただけるとわかりやすいと思います)

この二つの問題からこちらのプラグインをそのまま使うということはサーバー的にNGなので
新しくPluginsを作る、もしくは現存のプラグインを改良するということになりそうなんですね。

そして先ほど言った山にぶつかってしまう問題の解決策として私はこのような考えがあります

弓を打つ前にTargetを決めるのではなく、飛んでいる矢の半径何マス以内にいるプレイヤー(自分を除く)にHomingを行うというようなものです
弓本来の軌道を壊すことなく、なおかつホーミング機能をつけられるのでいい発想なのではないかと思うのですが、、
https://www.youtube.com/watch?v=yBKjvSsG0Cw
挙動としてはこの動画の3:20辺りのような感じにしたいと思っています

ごちゃごちゃしてきたので整理をすると
・矢の半径何マスという定義でTargetを決める
・弓本来の挙動は壊したくない

他に追加しようと考えているのは
・name、もしくはloreでこのアイテムと認識させる(Recipemanagerなどで作れるようにするため)
・Homingが発動するのは%で
・恐らく通常の弓と曲がった後の弓は違うものなのでダメージも違うと思うので、そこの調整をできるようにする(これは後々追加でもokです)

ここまで複雑なPluginsを作成依頼とは流石に図々しいと思うので案だけでも構いません。
これは補足ですが僕はplugins製作に関しては詳しくないので作成に関しては僕の知り合いが担当するので返信が遅れる・支離滅裂なことを言ってしまうことがありますがご了承ください

なにか疑問点などがありましたら質問ください。
それでは長文失礼しました


pluginに関しては詳しく無いので何も言えませんが、Homingする際に序所にターゲットの方向に軌道を修正していく、という方法なら図1の軌道を実現できそうです。
ろくな事を呟かないTwitterアカウント→@zyando79
アバター
zyando123
ID:93d451bf
石掘り
 
記事: 92
登録日時: 2016年8月29日(月) 13:28

  • (PostNo.285183)

Re: 自動追尾弓を作成する上での質問/作成に関するヒント募集

投稿記事by ONP » 2016年10月09日(日) 08:09

zyando123 さんが書きました:pluginに関しては詳しく無いので何も言えませんが、Homingする際に序所にターゲットの方向に軌道を修正していく、という方法なら図1の軌道を実現できそうです。


まずデフォルトの弓の機能として、重力による軌道以外の動きは不可能なので2の方法も同じなんですけどね
ONP
ID:b182fae2
石掘り
 
記事: 131
登録日時: 2015年8月12日(水) 22:45

  • (PostNo.285856)

Re: 自動追尾弓を作成する上での質問/作成に関するヒント募集

投稿記事by xNiwatorix » 2016年10月17日(月) 14:57

ProjectileLaunchEventで矢を取得,矢を打ったプレイヤーが条件を満たしているようであればスケジューラを用いて矢の軌道を変えていく。
スケジューラの開始を遅延させておけば最初はデフォルトの弓の軌道を描き、少したってからホーミングが開始されます。
矢の近くのキャラクターを取得するのはEntity#getNearbyEntitiesを使いましょう。
xNiwatorix
ID:9ac4d12b
水から上がったとこ
 
記事: 10
登録日時: 2016年11月30日(水) 16:40


Return to 質問:開発・制作関連

x