【发布时间】:2020-12-23 15:54:13
【问题描述】:
大家!
我遇到了问题。我需要画出敌人攻击的半径。半径需要与悬挂在其上的 SphereCollider 的半径相等。我试图在绘制圆圈的 LineRenderer 的帮助下做到这一点。是的,实际上它正确地绘制了圆,但是我的圆的半径小于它上面对撞机的半径,尽管我已经从 GetComponent() 中给出了一个变量的值。
有谁知道问题出在哪里?
我的部分代码:
float x;
float z;
float change = 2 * (float)Math.PI / segments;
float angle = change;
x = Mathf.Sin(angle) * radius;
_line.SetPosition(0, new Vector3(x, 0, Mathf.Cos(angle) * radius));
for (int i = 1; i < (segments + + 2); i++)
{
x = Mathf.Sin(angle) * radius;
z = Mathf.Cos(angle) * radius;
yield return new WaitForSeconds(drawSpeed);
_line.SetPosition((int)i, new Vector3(x, 0, z));
angle += change;
}
【问题讨论】:
-
嗯.. 你的
radius是什么?你从哪里得到的?还要注意,对撞机的最终大小还取决于对象的有损比例(所有父级和本地比例相结合) -
统一的“Gizmos”对这里有帮助吗?
-
@Fattie 听起来应该是在内置而不是在 SceneView 中
-
@derHugo 我不明白“你的半径是多少”是什么意思。我只有一个私有变量“radius”并定义它是这样的:“radius = _collider.radius”。但是你告诉我有损比例尺,因此我有一个问题,如何让我的对撞机更精细?
-
@gh272b 看到这就是我的假设,但没有在您的代码中看到它,我们怎么知道您从哪里获得半径值? ;) 现在下一个问题是:您的对象或其任何父对象的缩放比例是否与
1,1,1不同? .. 那segments + + 2也是错字吗?
标签: c# unity3d game-development