Lightning between two objects ?

Updated on March 21, 2017 in Answers
Share on Facebook0Tweet about this on TwitterShare on Google+0Share on Reddit0
0 on March 21, 2017

I was following this tutorial, but the lightning is not hitting the other object as the video shows.


private LineRenderer lRend;

private Vector3[] points = new Vector3[5];
private readonly int point_Begin = 0;

private readonly int point_Middle_Left = 1;

private readonly int point_Center = 2;

private readonly int point_Middle_Right = 3;

private readonly int point_End = 4;
public Transform line;
private readonly float randomPosOffset = 0.3f;

private readonly float randomWithOffsetMax = 2f;

private readonly float randomWithOffsetMin = 1f;
private readonly WaitForSeconds customFrame = new WaitForSeconds(0.05f);
void Start () {

lRend = GetComponent<LineRenderer>();

StartCoroutine(Beam());

}
private IEnumerator Beam()

{

yield return customFrame;

points[point_Begin] = transform.position;

points[point_End] = line.position;

CalculateMiddle();

lRend.SetPositions(points);

lRend.SetWidth(RandomWidthOffset(), RandomWidthOffset());

StartCoroutine(Beam());

}
private float RandomWidthOffset()

{

return Random.Range(randomWithOffsetMin, randomWithOffsetMax);

}
private void CalculateMiddle()

{

Vector3 center = GetMiddleWithRandomness(transform.position, line.position);
points[point_Center] = center;

points[point_Middle_Left] = GetMiddleWithRandomness(transform.position, center);

points[point_Middle_Right] = GetMiddleWithRandomness(center, line.position);

}
private Vector3 GetMiddleWithRandomness (Vector3 point1, Vector3 point2)

{

float x = (point1.x + point2.x) / point_Center;

float finalX = Random.Range(x - randomPosOffset, x + randomPosOffset);

float y = (point1.y + point2.y) / point_Center;

float finalY = Random.Range(y - randomPosOffset, y + randomPosOffset);
return new Vector3(finalX, finalY, 0);

}

}

How to fix this ?

  • Liked by
Reply