【发布时间】:2022-01-09 20:54:53
【问题描述】:
我做了一个圆圈,并在上面附加了一个激光盒。
激光将向其上 y 轴(垂直向上)发射光线投射。我还添加了一个线渲染器来查看它。
我希望光线投射来回旋转 90 度。有点像它扫描顶部的所有内容。我的问题是它不能正常工作。它确实来回旋转,但如果我移动激光物体的 x 位置,光线投射将以一个奇怪的角度旋转。
激光物体的脚本
public LineRenderer lineRenderer;
public LayerMask layerMask;
public float laserSpeed;
Vector3 pointA;
Vector3 pointB;
Vector3 castPosition;
RaycastHit2D rayCast;
float time;
void Start()
{
pointA = transform.eulerAngles + new Vector3(0f, 0f, 90f);
pointB = transform.eulerAngles + new Vector3(0f, 0f, -90f);
}
void Update()
{
time = Mathf.PingPong(Time.time * laserSpeed, 1);
transform.eulerAngles = Vector3.Lerp(pointA, pointB, time);
castPosition = new Vector3(transform.position.x, transform.position.y, transform.position.z);
rayCast = Physics2D.Raycast(castPosition, transform.TransformDirection(Vector2.up), 10f, layerMask);
lineRenderer.SetPosition(0, castPosition);
lineRenderer.SetPosition(1, transform.TransformDirection(Vector2.up) * 10f);
}
【问题讨论】:
-
@derHugo 好吧,我刚开始统一,所以我把一小段代码混合在一起。你能展示一下正确的做法吗?
标签: c# unity3d rotation 2d game-physics