55555hhh
本帖最后由 55555hhh 于 2019-7-24 19:10 编辑

这是我失败的例子





以上的这些都是看向一个固定点

请问一下,该怎么才能让玩家准确的看向一个坐标呢

缇米莉娅
本帖最后由 540083835 于 2019-7-24 19:27 编辑

1.在那个坐标放一个森林蝙蝠讲笑话
2.(数据删除)

July_Summer
540083835 发表于 2019-7-24 19:14
1.在那个坐标放一个森林蝙蝠讲笑话
2.你应该去问答版

的确没走错地方

缇米莉娅

唔唔好吧,习惯使然,抱歉

纱夜
本帖最后由 阴阳师元素祭祀 于 2019-7-24 19:54 编辑

Player player = ...;
player.getEyeLocation().setDirection(vec);
player.teleport(..);

55555hhh
阴阳师元素祭祀 发表于 2019-7-24 19:40
Player player = ...;
player.getEyeLocation().setDirection(vec);

谢谢大佬 我去试试

纱夜
本帖最后由 阴阳师元素祭祀 于 2019-7-24 19:47 编辑
55555hhh 发表于 2019-7-24 19:42
vec具体是什么可以请问一下嘛
我试了好多都不行

三维矢量 表示向看的方向
我看了下我手上的paperspigot端 是这样的

55555hhh
阴阳师元素祭祀 发表于 2019-7-24 19:40
Player player = ...;
player.getEyeLocation().setDirection(vec);


                          Vector v  = new Vector(121,74,137);
                          p.getEyeLocation().setDirection(v);

玩家没有任何反应

纱夜
55555hhh 发表于 2019-7-24 19:44
Vector v  = new Vector(121,74,137);
                          p.getEyeLocation().setDirection(v);

整段代码上下文有么
以及为什么看的方向矢量是固定的

55555hhh
阴阳师元素祭祀 发表于 2019-7-24 19:46
整段代码上下文有么
以及为什么看的方向矢量是固定的
  1. }else if(args[0].equalsIgnoreCase("x") && p.isOp()) {
  2.                           Location loc = p.getLocation();
  3.                           p.sendMessage("x: "+loc.getBlockX()+" Y: "+loc.getBlockY()+" Z: "+loc.getBlockZ());
  4.                           p.setFlySpeed(0.3f);
  5.                           Location v  = new Location(Bukkit.getWorld("world"),121,74,137);
  6.                           p.getEyeLocation().setDirection(v.toVector());
  7.                           
  8.                           
  9.                   }
复制代码


为什么是固定的..我想给玩家做一些指示类的东西

纱夜
本帖最后由 阴阳师元素祭祀 于 2019-7-24 19:51 编辑
55555hhh 发表于 2019-7-24 19:49
为什么是固定的..我想给玩家做一些指示类的东西

因为你的方向矢量是定值啊

你要玩家看向一个坐标你需要计算 玩家 看向那个坐标 的 方向矢量(vec)
建议参考数学书 (不知道哪里 x

一般来讲

你要看的点的坐标减去玩家所在坐标  就是一个三维矢量 (看向的方向了

55555hhh
本帖最后由 55555hhh 于 2019-7-24 20:07 编辑
阴阳师元素祭祀 发表于 2019-7-24 19:49
因为你的方向矢量是定值啊

你要玩家看向一个坐标你需要计算 玩家 看向那个坐标 的 方向矢量(vec)

  1.                           Location loc = p.getLocation();
  2.                           Location v  = new Location(Bukkit.getWorld("world"),121,74,137);
  3.                           
  4.                           p.teleport(p.getEyeLocation().setDirection(loc.subtract(v).toVector()));
复制代码

//大佬是这个意思吗...失败了

成了 是我把两个坐标弄反了 谢谢大佬

纱夜
55555hhh 发表于 2019-7-24 20:01
大佬是这个意思吗...失败了

        Location loc = p.getLocation();
        Location v = new Location(Bukkit.getWorld("world"), 121, 74, 137);
        loc.setDirection(loc.toVector().subtract(v.toVector()));
        p.teleport(loc);
大概可以这样
如果不可以 是指任何移动发生么

2776246489
看不懂咋办

第一页 上一页 下一页 最后一页