我想实现从一个方块连出一条粒子线
并且随着玩家移动跟踪玩家 
这个粒子线是有速度的
类似于Mythicmobs里面的
求助大佬
 本帖最后由 Sssss... 于 2019-11-10 09:13 编辑 
这个粒子线是有速度的
这句话是什么意思?
如果是跟踪玩家走过的路径的话
高频(频率可自定义)执行execute as @a run particle xxx
这个粒子线是有速度的
这句话是什么意思?
如果是跟踪玩家走过的路径的话
高频(频率可自定义)执行execute as @a run particle xxx
Sssss... 发表于 2019-11-10 09:10
这个粒子线是有速度的
这句话是什么意思?
如果是跟踪玩家走过的路径的话
就是粒子线是慢慢延伸的
Sssss... 发表于 2019-11-10 09:10
这个粒子线是有速度的
这句话是什么意思?
如果是跟踪玩家走过的路径的话
666666666666666666666
 本帖最后由 Bryan33 于 2019-11-10 11:05 编辑 
复制代码复制代码
-     /**
 
-      * 绘制追踪效果
 
-      * @param p 执行的插件
 
-      * @param from 出发点
 
-      * @param target 目标玩家
 
-      * @param speed 追踪速度 每tick飞行距离
 
-      * @param drawfunc 绘制函数
 
-      */
 
-     public static void draw(Plugin p, Location from, Player target, double speed, Consumer<Location> drawfunc) {
 
-         new BukkitRunnable() {
 
-             Location curr = from;
 
-             @Override
 
-             public void run() {
 
-                 if(target.getWorld() != curr.getWorld()){
 
-                     this.cancel();
 
-                     return;
 
-                 }
 
-                 if(curr.distanceSquared(target.getLocation()) < 0.1){
 
-                     this.cancel();
 
-                     return;
 
-                 }
 
-                 drawfunc.accept(curr);
 
-                 Vector vec = target.getLocation().toVector().subtract(curr.toVector());
 
-                 vec = vec.normalize().multiply(speed);
 
-                 curr = curr.add(vec);
 
-             }
 
-         }.runTaskTimer(p, 1, 1);
 
- }
- /**
 
-      * 绘制追踪效果 并且保留追踪线
 
-      *
 
-      * @param p 执行的插件
 
-      * @param from 出发点
 
-      * @param target 目标玩家
 
-      * @param speed 追踪速度 每tick飞行距离
 
-      * @param drawfunc 绘制函数
 
-      */
 
-     public static void draw2(Plugin p, Location from, Player target, double speed, Consumer<Location> drawfunc) {
 
-         new BukkitRunnable() {
 
-             Location curr = from;
 
-             List<Location> pass = new ArrayList<>();
 
 
-             @Override
 
-             public void run() {
 
-                 if (target.getWorld() != curr.getWorld()) {
 
-                     this.cancel();
 
-                     return;
 
-                 }
 
-                 if (curr.distanceSquared(target.getLocation()) < 0.1) {
 
-                     this.cancel();
 
-                     return;
 
-                 }
 
-                 pass.add(curr.clone());
 
-                 for (Location loc : pass) {
 
-                     drawfunc.accept(loc);
 
-                 }
 
-                 Vector vec = target.getLocation().toVector().subtract(curr.toVector());
 
-                 vec = vec.normalize().multiply(speed);
 
-                 curr = curr.add(vec);
 
-             }
 
-         }.runTaskTimer(p, 1, 1);
 
- }
rrrrrrrrrrrrrrrrrrrrrrrrrrr
.................
..........................
............................
...............................
.........................
对不起前面看错版块了
可以使用Runnable计划任务实现
即设置三个坐标变量 每次执行都向玩家方向移动一点并创建粒子
可以使用Runnable计划任务实现
即设置三个坐标变量 每次执行都向玩家方向移动一点并创建粒子
可以的谢谢
。。。。。。。。。。。。。
要慢慢延伸确实要计时器的 