我有一个游戏对象,应该向多个方向发射光束。我想使其尽可能地灵活,所以我添加了几个目标,脚本会绘制这些光线(从游戏对象到目标)。我已经使用了目标变换的位置变量,但这只是使所有光线朝着一个奇怪的方向偏离,但是当我四处走动时并没有改变。然后,我尝试了目标的局部位置,但是这导致所有光线朝其原始方向行进,而没有考虑旋转的变化。
这是激光脚本的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Laser : MonoBehaviour {
private LineRenderer Linerenderer;
public List<Transform> rays;
void Start()
{
Physics2D.queriesStartInColliders = false;
}
void Update () {
foreach (Transform tran in rays)
{
RaycastHit2D hit = Physics2D.Raycast(transform.position, tran.position,20);
Debug.DrawLine(transform.position, hit.point);
}
}
}
屏幕截图:
答案 0 :(得分:0)
您指定的Physics2D.Raycast()方法的第二个参数是错误的:它不应该是空间位置,而应该是方向。 Debug.DrawRay()方法的第二个参数是也是方向,而不是空间点。
尝试以下操作:
void Update () {
foreach (Transform tran in rays)
{
Vector2 direction = (tran.position - transform.position).normalized;
RaycastHit2D hit = Physics2D.Raycast(transform.position, direction, 20);
Vector2 rayDirection = hit.point - transform.position;
Debug.DrawRay(transform.position, rayDirection);
}
}
答案 1 :(得分:0)
谢谢,经过一番混乱,我终于能够使它正常工作。 如果有人需要类似的帮助(动态射线投射)。 这是最终代码(您可能需要稍作修改):
Martha! 1
Please! 1
Stop! 1
Why 2
did 2
name? 2
**say 1**
that 2
you 2