将游戏对象夹在边框内,同时沿着 x 和 y 缓慢跟随另一个



我正在尝试制作一个空气曲棍球游戏,我需要将AI夹在一个特定的区域,同时当它进入一半时,它会跟随冰球绕着板子。我认为以下代码会起作用,但我从桨中得到了一些奇怪的行为,它要么 a( 在关卡开始时卡在 y=minY,要么 b( 它似乎会在 minY 和 maxY 之间连续相位。

public float speed = 0.075f;
public float minX = -3.7f, minY = 6.7f, maxX = 3.7f, maxY = 0.5f;
void Update () {
    transform.position = new Vector3(Mathf.Clamp(Mathf.Lerp(transform.position.x, _puck.transform.position.x, speed), minX, maxX), 
                                     Mathf.Clamp(Mathf.Lerp(transform.position.y, _puck.transform.position.y, speed), minY, maxY),
                                     transform.position.z);
}

感谢您的任何帮助。

编辑我应该补充一点,如果我只在 y 上使用夹子,它会按预期工作,但是如果我也不夹紧它,它可能会随着时间的推移从 x 中夹出。

您的minY大于 maxY

我认为你应该反转它们。

Mathf.Clamp 在两个数字之间夹一个值:https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html

Mathf.Lerp 在 2 个值之间插值一个 thrid 值。https://docs.unity3d.com/ScriptReference/Mathf.Lerp.html

如果我得到了这个想法,你希望你的AI被锁定在一个特定的区域:minY,maxY,minX,maxX,而它仍然跟随冰球。因此,您应该将冰球的位置夹在这些值之间。

void Update () {
transform.position = new Vector3(Mathf.Clamp(_puck.transform.position.x, minX, maxX), Mathf.Clamp(_puck.transform.position.y, minY, maxY),transform.position.z);}

最新更新