rt,类似于生物走路或者箭矢抛射(到指定点停下)的效果,而不是直接tp
你的Modding API是Forge/Fabric/Bukkit?
Bukkit解答:
箭矢抛射需要绘制抛物线曲线,这点PVPIN已有相关API(JavaScript),可以直接抄(注意开源协议)
另外一个生物就复杂了,涉及到是不是有障碍等问题,推荐采用已有的PathFinderGoal
箭矢抛射需要绘制抛物线曲线,这点PVPIN已有相关API(JavaScript),可以直接抄(注意开源协议)
另外一个生物就复杂了,涉及到是不是有障碍等问题,推荐采用已有的PathFinderGoal
本帖最后由 轻光233 于 2020-8-16 22:04 编辑
仅仅只是类似像WSAD这样的移动即可,不需要考虑障碍
举箭矢的例子只是为了说明不仅仅是要LivingEntity
William_Shi 发表于 2020-8-16 21:51
Bukkit解答:
箭矢抛射需要绘制抛物线曲线,这点PVPIN已有相关API(JavaScript),可以直接抄(注意开源协 ...
仅仅只是类似像WSAD这样的移动即可,不需要考虑障碍
举箭矢的例子只是为了说明不仅仅是要LivingEntity
轻光233 发表于 2020-8-16 22:03
仅仅只是类似像WSAD这样的移动即可,不需要考虑障碍
举箭矢的例子只是为了说明不仅仅是要LivingEntity ...
https://www.mcbbs.net/thread-1039885-1-1.html
(得去申请解锁)
试试这个
把玩家改成指定坐标就行
轻光233 发表于 2020-8-16 22:03
仅仅只是类似像WSAD这样的移动即可,不需要考虑障碍
举箭矢的例子只是为了说明不仅仅是要LivingEntity ...
我想知道tp有哪里不自然的?
换句话说,你要的效果和tp有何不同?
洞穴夜莺 发表于 2020-8-17 00:00
我想知道tp有哪里不自然的?
换句话说,你要的效果和tp有何不同?
走过去和闪现过去效果确实不一样
1.15下的一个例子
复制代码
将该PathfinderGoalMoveTowardsPlayer覆盖nms entity自身的pathfinder即可
1.16请自行修改
- public class PathfinderGoalMoveTowardsPlayer extends PathfinderGoal {
- private final EntityCreature creature;
- private Vec3D location;
- private double x;
- private double y;
- private double z;
- private final float stopDistance;
- public PathfinderGoalMoveTowardsPlayer(EntityCreature var0, Vec3D var2, float var3) {
- this.creature = var0;
- this.stopDistance = var3;
- this.location = var2;
- a(EnumSet.of(PathfinderGoal.Type.MOVE));
- }
- @Override
- public boolean a() {
- if (this.location == null)
- return false;
- if (this.location.f(new Vec3D(creature.locX(), creature.locY(), creature.locZ())) > (this.stopDistance * this.stopDistance))
- return false;
- Vec3D var0 = this.location;
- if (var0 == null)
- return false;
- this.x = var0.x;
- this.y = var0.y;
- this.z = var0.z;
- return true;
- }
- @Override
- public boolean b() {
- return (!this.creature.getNavigation().m() && this.location.f(new Vec3D(creature.locX(), creature.locY(), creature.locZ())) < (this.stopDistance * this.stopDistance));
- }
- @Override
- public void d() {
-
- }
- @Override
- public void c() {
- this.creature.getNavigation().a(this.x, this.y, this.z, this.stopDistance);
- }
- }
将该PathfinderGoalMoveTowardsPlayer覆盖nms entity自身的pathfinder即可
1.16请自行修改
南柯郡守 发表于 2020-8-17 00:43
走过去和闪现过去效果确实不一样
既然不需要考虑障碍物
那就是说不需要寻路
既然如此,连续的tp有啥不自然的吗?
洞穴夜莺 发表于 2020-8-17 07:12
既然不需要考虑障碍物
那就是说不需要寻路
既然如此,连续的tp有啥不自然的吗? ...
不寻路不代表就要连续tp
你平常玩游戏走路不自带寻路吧?也不是连续tp啊
本帖最后由 轻光233 于 2020-8-17 07:52 编辑
上文回复已经提到不仅仅是要LivingEntity,而且不需要自动寻路,不过还是感谢码这么多代码
疾风暗影 发表于 2020-8-17 02:07
1.15下的一个例子
上文回复已经提到不仅仅是要LivingEntity,而且不需要自动寻路,不过还是感谢码这么多代码
轻光233 发表于 2020-8-17 07:24
不寻路不代表就要连续tp
你平常玩游戏走路不自带寻路吧?也不是连续tp啊 ...
我说的是你认为连续tp有什么看起来不自然的地方
连续tp确实麻烦且多余
洞穴夜莺 发表于 2020-8-17 07:28
我说的是你认为连续tp有什么看起来不自然的地方
连续tp确实麻烦且多余
连续tp就跟跳ping了一样,而且如果在墙边有可能会卡墙,完全没有移动自然,而且移动才是我想要实现的效果
本帖最后由 CyanBillows 于 2020-8-18 17:17 编辑
Entity.setVelocity(目的地方向的向量)
不过这个办法遇到障碍物容易卡住
Entity.setVelocity(目的地方向的向量)
不过这个办法遇到障碍物容易卡住