0

我正在尝试制作一个空气曲棍球游戏,我需要将 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 中夹出。

4

2 回答 2

1

minY的大于maxY

我认为你应该颠倒它们。

于 2017-03-18T11:41:50.133 回答
0

Mathf.Clamp 钳制两个数字之间的值:https ://docs.unity3d.com/ScriptReference/Mathf.Clamp.html

Mathf.Lerp 在 2 个值之间插入第三个值。 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);}
于 2017-03-18T11:40:00.423 回答