-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLaser.cs
More file actions
65 lines (60 loc) · 1.67 KB
/
Copy pathLaser.cs
File metadata and controls
65 lines (60 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Laser : MonoBehaviour
{
[SerializeField] Transform startPoint;
[SerializeField] Transform target;
[SerializeField] float laserDistance;
[SerializeField] float laserOffTime;
[SerializeField] float laserOnTime;
private LineRenderer lineRenderer;
private bool isLaserOn;
private float currentOffTime;
private float currentOnTime;
private void Start()
{
lineRenderer = GetComponent<LineRenderer>();
isLaserOn = true;
}
private void OnDrawGizmos()
{
Gizmos.color = Color.red;
Vector3 offsetY = new Vector3(0, 3, 0);
Gizmos.DrawRay(startPoint.position, startPoint.forward * laserDistance);
}
private void Update()
{
if (isLaserOn)
{
lineRenderer.SetPosition(0, startPoint.position);
lineRenderer.SetPosition(1, startPoint.position + startPoint.forward * laserDistance);
Ray ray = new Ray(startPoint.position, startPoint.forward);
if (Physics.Raycast(ray, out RaycastHit hit, laserDistance))
{
lineRenderer.SetPosition(1, hit.point);
if (hit.transform.CompareTag("Player"))
{
hit.collider.GetComponent<Player>().OnLaserHit();
}
}
}
if (currentOffTime < laserOffTime)
{
currentOffTime += Time.deltaTime;
isLaserOn = false;
lineRenderer.enabled = false;
}
else if (currentOnTime < laserOnTime)
{
currentOnTime += Time.deltaTime;
isLaserOn = true;
lineRenderer.enabled = true;
}
else
{
currentOnTime = 0;
currentOffTime = 0;
}
}
}