Unity3D在一定距离外生成物体

Unity3D spawning objects a certain distance away

好的,所以这个问题有点奇怪,但我会试一试。在我的统一游戏中,我有 4 条车道供敌人行驶。所有车道都通向同一地点(玩家)。我有一个变量,其中包含敌人和玩家之间的距离平方。现在我想当我击中一种特殊的敌人时将他移到另一条线上。我如何使用距离变量我必须改变它的变换。注意:车道只是从 4 个游戏对象到玩家的直线。我正在考虑将传送敌人放在车道的开头并使用 Vector3.MoveTowards,但我无法算出数学。

发布整个代码没有帮助,但这是重要的部分

transform.position = Vector3.MoveTowards(transform.position, _destination.position, Time.deltaTime * _speed);
distancesquared = (_destination.transform.position - transform.position).sqrMagnitude;

这会在 Update() 方法中移动敌人并计算距离。

现在敌人本身是从 4 个变换数组中随机实例化的。当我想将一个敌人传送到另一条车道时,我做的第一件事就是使它的变换等于该车道的生成变换。然后我想将它沿着新车道移动到它已经在旧车道上行驶过的相同距离。 车道图(抱歉,油漆技巧不好) 假设车道长度相同。

您可以通过获取直线的单位方向向量,然后将其乘以您希望蠕变沿直线的距离来实现。假设您要移动到的车道的变换称为 toLane,您要移动的敌人称为 enemy,小兵向(玩家)移动的点称为player。代码看起来像这样:

Vector3 direction = (toLane.transform.position - player.transform.position).normalized;
Vector3 distance = Vector3.Distance(enemy.transform.position, player.transform.position);
enemy.transform.position = direction * distance

此代码会将敌人移动到另一条车道上与玩家之前的距离的位置。然后你可以使用你通常的移动逻辑将它移动到正确的方向形式然后继续(大概你只需要告诉它它已经移动了车道)。