gpt4 book ai didi

bukkit - 我如何检测玩家是否正在看另一个实体?

转载 作者:行者123 更新时间:2023-12-04 11:47:42 26 4
gpt4 key购买 nike

我有一个玩家,当然能够以矢量形式捕获玩家面对的方向。

使用这个向量,我需要计算玩家是否正在查看 x 内的实体。块,如果“咒语”会击中它。我还需要考虑实体前面是否有任何东西。

到目前为止,我的思考过程是首先,获取 x 中所有实体的列表。玩家的方块。但从那里,我没有任何线索。

任何引导我走向正确方向的帮助都会很棒。

最佳答案

我编辑了您的代码,使其更精确、更简单,它不会经过块。但是你的方法很好:D

public static Entity getNearestEntityInSight(Player player, int range) {
ArrayList<Entity> entities = (ArrayList<Entity>) player.getNearbyEntities(range, range, range);
ArrayList<Block> sightBlock = (ArrayList<Block>) player.getLineOfSight( (Set<Material>) null, range);
ArrayList<Location> sight = new ArrayList<Location>();
for (int i = 0;i<sightBlock.size();i++)
sight.add(sightBlock.get(i).getLocation());
for (int i = 0;i<sight.size();i++) {
for (int k = 0;k<entities.size();k++) {
if (Math.abs(entities.get(k).getLocation().getX()-sight.get(i).getX())<1.3) {
if (Math.abs(entities.get(k).getLocation().getY()-sight.get(i).getY())<1.5) {
if (Math.abs(entities.get(k).getLocation().getZ()-sight.get(i).getZ())<1.3) {
return entities.get(k);
}
}
}
}
}
return null; //Return null/nothing if no entity was found
}

关于bukkit - 我如何检测玩家是否正在看另一个实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31258964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com