【发布时间】:2020-01-11 13:36:41
【问题描述】:
我正在研究unity中的一些细节,结果我陷入了死胡同。首先我想知道,是否可能有一个功能,但是如何根据它所看到的角度来提高物体的速度。请您用 examples 进行演示,因为到目前为止我的想法很枯燥。我尝试使用数学来实现这个功能(可能是个坏主意),因为我很想知道这种情况在数学实践中是如何运作的,因此开发了一些关于它的理论:
首先我想,在90度角度,一次移动,只有Y轴增加,所以X轴 保持在 0。所以要找出给定角度的 X 和 Y 的确切变化,您所要做的就是找到角度割线并增加它,还是在另一个点?可能我的想法是错误的,我是三角学的“新手”,但我很想知道我错了什么,如果我错了,什么是正确的想法。
如果我说错了很多事情,请告诉我,因为我知道我需要多学习:)
下面是我创建的函数的代码,最初只是让我的角色在 Y 轴上旋转,所以只需增加或减少速度值。所以我添加了一个方法,根据物体正在看的角度生成随机角度,所以我只是使用了不同的象限。
void invertMove()
{
if(!inverse)
{
float tempRot = Random.Range(180f, 360f);
zombieSpeed = -0.01f;
zombieBody.SetRotation(tempRot);
inverse = true;
}
else
{
float tempRot = Random.Range(0f, 180f);
zombieSpeed = 0.01f;
zombieBody.SetRotation(tempRot);
inverse = false;
}
}
【问题讨论】:
-
不太确定
SetRotation是什么,但是如果您想生成一个以度为单位的随机角度,那么您可以通过将向右的单位向量逆时针旋转该角度来获得 x/y 坐标,那么您可以做float randomAngle = Random.Range(0f, 360f);Vector2 coords = new Vector2(Mathf.Cos(randomAngle * Mathf.Deg2Rad), Mathf.Sin(randomAngle * Mathf.Deg2Rad)); -
@Ruzihm
SetRotation似乎来自Rigidbody2D;)