Unity中不同角度的加力

Adding force in different angles in Unity

我正在制作一款水果出现在屏幕上的游戏(此时它们从屏幕底部飞进来,向上移动,然后又从屏幕上掉下来),你必须粉碎水果才能获得积分。

我想弄清楚如何在不同的角度添加一个力,使水果飞到屏幕上的不同位置,而不是只在中间向上然后向下。

我是这样给水果加力的:

    foodItemRigidBody.AddForce(transform.up * force);

我的产卵位置在屏幕底部的中间,所有的水果都在那里产卵,并添加了一个力,使它们飞起来并直线掉落。

我怎样才能让它们产卵在中间并向上飞,有的稍微向右飞,有的稍微向左飞?

如果是 2D,我会尝试将你的向上方向随机化到两侧:

Vector3 upDirSlightlyRandomized = (transform.up + transform.right + new Vector3(Random.Range(-0.5f, 0.5f), 0, 0).normalized;
foodItemRigidBody.AddForce(upDirSlightlyRandomized * force);

可能相同但更直接:

Vector3 upDirSlightlyRandomized = new Vector3(Random.Range(-0.5f, 0.5f), 1, 0)).normalized;

我会玩 +-0.5f 范围,直到达到所需。对于 3D,我也会尝试随机化 z.

制作 3 个对象。

LeftBorder

RightBorder

Target

让 Target 移动到 x-axis 上 LeftBorder 和 RightBorder 之间的随机位置,但在每次发射水果之间保持它自己的 y-axis 和 z-axis。

然后你的重生点应该使用 Transform.LookAt 转向目标。

https://docs.unity3d.com/ScriptReference/Transform.LookAt.html

这样你的出生点每次都会旋转到一个随机的目标位置。