defensemobというtagを持ったmobから最も近いattackmobというtagを持ったmobを検知したい
うまい方法が思い当たりませんでした..
6 Replies
このような状態の時、特定の間隔で相手から送られた敵(今回はzombie)を自分の陣地を守るmob(今回はskeleton)から特定の距離にいる場合zombieのHPを減らすということがしたかったです
function getNearestEntity(center: entity, radius: number) :: entity:
set {_distance} to {_radius}
loop all entities in radius {_radius} around {_center}:
loop-entity is not {_center}
loop-entity has scoreboard tag "attackmob":
distance between {_center} and loop-entity <= {_distance}:
set {_distance} to distance between {_center} and loop-entity
set {_result} to loop-entity
return {_result}
every seconds:
loop all entities:
if loop-entity has scoreboard tag "defensemob":
set {_entity} to getNearestEntity(loop-entity, 10)
kill {_entity}
HPを減らすかわりにkillにしていますができました..
次からは具体的にやりたいことも書くようにします;;
これって自分で歩かせてるんでしょ?
無理やりtpで動かしてますね
透明なarmorstandがあって
作ってからarmorstandにする意味あったのかとは思いましたけど...
全部 no Aiにして処理止めて、その辺の位置情報とかの処理全部独自にしてもいいんじゃないかな
少し変わるのですがこの上の画像のskeletonをzombieの方向に向かせようとして
every seconds:
loop all entities:
if loop-entity has scoreboard tag "defensemob":
set {_entity} to getNearestEntity(loop-entity, {range.%loop-entity%})
remove {damage.%loop-entity%} from {mob.%{_entity}%.hp}
set {_location} to location of {_entity}
set {_location'} to location of loop-entity
set {_v} to vector from {_location} to {_location'}
set {_location'}'s yaw to vector yaw of {_v}
teleport loop-entity to {_location}
set {_entity} to none
としたのですがset {_location}'s yaw to vector yaw of {_v}の部分でyaw of {_location'}'s yaw can't be set to 'vector yaw of {_v}' because the letter is not a numberというエラーが出ました。改善すべきところはどこでしょうか...
独自というのはどうゆうことでしょうか...