Unity3d 从一个点到另一个旋转点的光线投射
我必须在游戏中创建一个激光束效果 基本上我是用线条渲染的。我必须从玩家到某个点划一条线,那个点在屏幕上旋转。现在,我必须在该点进行光线投射,以在渲染线中创建第三个反射顶点 Physics2d.raycast不会返回准确的命中点。你能帮助我如何在旋转物体上使用光线投射吗。我会非常感激的。我试着计算角度,但仍然有差异 使用UnityEngine; 使用系统集合Unity3d 从一个点到另一个旋转点的光线投射,unity3d,Unity3d,我必须在游戏中创建一个激光束效果 基本上我是用线条渲染的。我必须从玩家到某个点划一条线,那个点在屏幕上旋转。现在,我必须在该点进行光线投射,以在渲染线中创建第三个反射顶点 Physics2d.raycast不会返回准确的命中点。你能帮助我如何在旋转物体上使用光线投射吗。我会非常感激的。我试着计算角度,但仍然有差异 使用UnityEngine; 使用系统集合 public class RayDeflection : TouchHandler { Vector3 p1, p2, o
public class RayDeflection : TouchHandler
{
Vector3 p1, p2, orgPos;
LineRenderer lineRenderer;
protected const int HITS = 2;
float RAY_LENGTH = 1.5f;
// Use this for initialization
void Start ()
{
PlayerScript = PlayerScript = GameObject.FindGameObjectWithTag ("PlayerScript").gameObject.GetComponent<PlayerControlScript> ();
lineRenderer = transform.GetComponent<LineRenderer> ();
Laser ();
}
protected override void OnTouchStart (Vector3 tapPosition, TouchHandler.ScreenTouchType touchType)
{
}
protected override void OnTouchMoved (Vector3 tapPosition, Vector3 deltaMove, float duration, TouchHandler.ScreenTouchType touchType)
{
//RaycastCheck ();
Laser ();
//Laser (tapPosition);
}
protected override void OnTouchEnd (Vector3 tapPosition, float duration, TouchHandler.ScreenTouchType touchType)
{
}
// Update is called once per frame
void Laser ()
{
//p1 = transform.position;
orgPos = transform.position;
p1 = transform.right * RAY_LENGTH;
{
RaycastHit2D hit = Physics2D.Raycast (orgPos, p1);
lineRenderer.SetPosition (0, transform.position);
//Debug.DrawRay (p1, p2);
//
if (hit.collider != null) {
// Debug.LogError (hit.collider.name);
p1 = hit.point;
lineRenderer.SetPosition (1, p1);
Vector3 distVect = (transform.position - p1);
Vector2 shotVect = new Vector2 (distVect.x, distVect.y);
Vector3 rVect = Vector3.Reflect ((p1 - orgPos), Vector3.right);
Debug.LogError (p1);
p2 = rVect * RAY_LENGTH;
// Debug.DrawRay (p1, p2);
if (hit.collider.tag.Equals (Constant.tag.items)) {
lineRenderer.SetVertexCount (3);
//
lineRenderer.SetPosition (2, p2);
} else {
lineRenderer.SetVertexCount (2);
}
} else {
lineRenderer.SetVertexCount (2);
}
}
}
}
如果有人愿意帮助你,你可能必须更具体地描述你已经尝试过的代码,并分享其中的一些代码。