作为一个解决方案,在地图上随机取一点
地图上的随机一个位置,如果大范围内随机生成XYZ坐标,然后加一个“地图上最近的可行走位置”来实现的,这样的话……极大概率会随机到地图边界的地方
正解是
先找到边界位置
再随机。角色位置到边界中间一个位置
随机一个方向矢量A 然后最近可行走(A*1000+角色位置)就是边界位置

预览
站点图 几个点是连在一个图上的 可能会飞图 解决方案是 利用 地图检测,把代码里面的 乘 200,改小一点
完整代码如下(必须用 英文客户端复制,中文客户端有bug)
rule("按F传送到随机位置,Y值不改变")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Interact) == True;
}
actions
{
Set Player Variable(Event Player, T, Add(Vector(Random Real(-5.000, 5), 0, Random Real(-5.000, 5)), Position Of(Event Player)));
Set Player Variable(Event Player, T, Direction Towards(Position Of(Event Player), Player Variable(Event Player, T)));
Set Player Variable(Event Player, T, Nearest Walkable Position(Add(Multiply(200, Player Variable(Event Player, T)), Position Of(
Event Player))));
Teleport(Event Player, Nearest Walkable Position(Vector(Random Real(Min(X Component Of(Position Of(Event Player)), X Component Of(
Player Variable(Event Player, T))), Max(X Component Of(Position Of(Event Player)), X Component Of(Player Variable(Event Player,
T)))), Y Component Of(Position Of(Event Player)), Random Real(Min(Z Component Of(Position Of(Event Player)), Z Component Of(
Player Variable(Event Player, T))), Max(Z Component Of(Position Of(Event Player)), Z Component Of(Player Variable(Event Player,
T)))))));
Create Icon(Event Player, Player Variable(Event Player, T), Arrow: Down, Visible To and Position, Red, True);
}
}
rule("按下蹲传送到边界")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Crouch) == True;
Player Variable(Event Player, T) != 0;
}
actions
{
Teleport(Event Player, Nearest Walkable Position(Player Variable(Event Player, T)));
}
}
评论
这里空空如也~