我正在尝试让LineRender与游戏对象一起旋转。我希望它从其父游戏对象的中心开始,一直延伸到遇到另一个游戏对象。就像你站在房间里旋转时激光指针的工作原理一样。
下面的代码半工作原理是
LineRenderer
到任何
GameObject
当它旋转时。所以它跳了起来。这是上图中的示例C红线。
此外,我的“墙”位于带有“block”标记的统一tilemap中,因此只有返回到
RayCast2D
是在平铺贴图之外的。墙壁确实有
TileMap Collider 2D
附属的。
A行和B行代表了我希望发生的事情。但是,这些墙不会显示为平铺贴图中的墙。
有什么帮助吗?
private LineRenderer lineRenderer;
private int xRot = 0;
private void Awake() {
lineRenderer = GetComponent<LineRenderer>();
if (lineRenderer != null) {
lineRenderer.transform.position = new Vector3(transform.position.x, transform.position.y, -3); // Put this higher up so the camera can see
lineRenderer.startWidth = 0.2f;
lineRenderer.endWidth = 0.2f;
lineRenderer.useWorldSpace = true;
lineRenderer.SetPosition(0, transform.position);
}
}
private void void Update() {
transform.rotation = Quaternion.Euler(0, 0, xRot);
xRot++;
xRot = (int)Mathf.Repeat(xRot, 360);
Debug.DrawRay(transform.position, transform.up * 10, Color.red);
RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.TransformPoint(Vector2.up));
var distance = GetDistance(transform.position, hit.collider.transform.position);
Vector3 endPos = transform.position + (hit.collider.transform.position.normalized * distance);
lineRenderer.SetPosition(1, endPos);
}