mr lazer done
This commit is contained in:
parent
b13cdcd02d
commit
1315f5c035
|
@ -498,14 +498,14 @@ Transform:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 4485246138553412395}
|
m_GameObject: {fileID: 4485246138553412395}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5}
|
m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
|
||||||
m_LocalPosition: {x: 0, y: 0.074043155, z: 0}
|
m_LocalPosition: {x: 0, y: 0.074043155, z: 0}
|
||||||
m_LocalScale: {x: 188.2847, y: 188.2847, z: 188.2847}
|
m_LocalScale: {x: 188.2847, y: 188.2847, z: 188.2847}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 3536756844151575023}
|
- {fileID: 3536756844151575023}
|
||||||
m_Father: {fileID: 7233238969736204230}
|
m_Father: {fileID: 7233238969736204230}
|
||||||
m_LocalEulerAnglesHint: {x: -90, y: 90, z: 0}
|
m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0}
|
||||||
--- !u!33 &743831284301368974
|
--- !u!33 &743831284301368974
|
||||||
MeshFilter:
|
MeshFilter:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -1092,7 +1092,7 @@ MonoBehaviour:
|
||||||
visualRadius: 1
|
visualRadius: 1
|
||||||
knob: {fileID: 5534604080396206135}
|
knob: {fileID: 5534604080396206135}
|
||||||
knobSensitiviy: 4
|
knobSensitiviy: 4
|
||||||
rotationMinMax: {x: -30, y: 30}
|
rotationMinMax: {x: 60, y: 120}
|
||||||
--- !u!1 &8464167623480225098
|
--- !u!1 &8464167623480225098
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -1187,17 +1187,17 @@ PrefabInstance:
|
||||||
- target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15,
|
- target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_LocalPosition.x
|
propertyPath: m_LocalPosition.x
|
||||||
value: 0
|
value: 1.22
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15,
|
- target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_LocalPosition.y
|
propertyPath: m_LocalPosition.y
|
||||||
value: 0
|
value: 0.517
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15,
|
- target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_LocalPosition.z
|
propertyPath: m_LocalPosition.z
|
||||||
value: 0
|
value: -0.14
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15,
|
- target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15,
|
||||||
type: 3}
|
type: 3}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4e5e3131ea2a78cfd93219be3806da6d
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -477,41 +477,6 @@ PrefabInstance:
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
value: 0
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 2600338399449118553, guid: 91554800af50ec827822f376e2fc5f64,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 0.7071068
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2600338399449118553, guid: 91554800af50ec827822f376e2fc5f64,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: -0.7071068
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2600338399449118553, guid: 91554800af50ec827822f376e2fc5f64,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2600338399449118553, guid: 91554800af50ec827822f376e2fc5f64,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2600338399449118553, guid: 91554800af50ec827822f376e2fc5f64,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 8606494081824023083, guid: 91554800af50ec827822f376e2fc5f64,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: rotationMinMax.x
|
|
||||||
value: 60
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 8606494081824023083, guid: 91554800af50ec827822f376e2fc5f64,
|
|
||||||
type: 3}
|
|
||||||
propertyPath: rotationMinMax.y
|
|
||||||
value: 120
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents: []
|
m_RemovedComponents: []
|
||||||
m_RemovedGameObjects: []
|
m_RemovedGameObjects: []
|
||||||
m_AddedGameObjects: []
|
m_AddedGameObjects: []
|
||||||
|
@ -1329,7 +1294,7 @@ PrefabInstance:
|
||||||
- target: {fileID: 7348612162646443967, guid: fd9f9b61c0ebb324ebc9f929e26706bc,
|
- target: {fileID: 7348612162646443967, guid: fd9f9b61c0ebb324ebc9f929e26706bc,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_LocalRotation.w
|
propertyPath: m_LocalRotation.w
|
||||||
value: -0.13805284
|
value: -0.1380528
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 7348612162646443967, guid: fd9f9b61c0ebb324ebc9f929e26706bc,
|
- target: {fileID: 7348612162646443967, guid: fd9f9b61c0ebb324ebc9f929e26706bc,
|
||||||
type: 3}
|
type: 3}
|
||||||
|
@ -1344,7 +1309,7 @@ PrefabInstance:
|
||||||
- target: {fileID: 7348612162646443967, guid: fd9f9b61c0ebb324ebc9f929e26706bc,
|
- target: {fileID: 7348612162646443967, guid: fd9f9b61c0ebb324ebc9f929e26706bc,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_LocalRotation.z
|
propertyPath: m_LocalRotation.z
|
||||||
value: -0.13815573
|
value: -0.13815574
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 8882344377078016156, guid: fd9f9b61c0ebb324ebc9f929e26706bc,
|
- target: {fileID: 8882344377078016156, guid: fd9f9b61c0ebb324ebc9f929e26706bc,
|
||||||
type: 3}
|
type: 3}
|
||||||
|
@ -1541,6 +1506,84 @@ Camera:
|
||||||
type: 3}
|
type: 3}
|
||||||
m_PrefabInstance: {fileID: 1732242001}
|
m_PrefabInstance: {fileID: 1732242001}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &2047642824
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 269373318190900745, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 2.33
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 269373318190900745, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0.08219504
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 269373318190900745, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0.07
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 269373318190900745, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 269373318190900745, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 269373318190900745, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 269373318190900745, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 269373318190900745, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 269373318190900745, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 269373318190900745, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 645933633211530419, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: MrLazer
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7605001933718563855, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: startHealth
|
||||||
|
value: 1e+14
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7605001933718563855, guid: 4e5e3131ea2a78cfd93219be3806da6d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: OnHealthZero.m_PersistentCalls.m_Calls.Array.size
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 4e5e3131ea2a78cfd93219be3806da6d, type: 3}
|
||||||
--- !u!1001 &667212637924654954
|
--- !u!1001 &667212637924654954
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -1628,3 +1671,4 @@ SceneRoots:
|
||||||
- {fileID: 504816165}
|
- {fileID: 504816165}
|
||||||
- {fileID: 1395991987}
|
- {fileID: 1395991987}
|
||||||
- {fileID: 658701657}
|
- {fileID: 658701657}
|
||||||
|
- {fileID: 2047642824}
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class BeamTower : AimTower
|
||||||
|
{
|
||||||
|
[SerializeField] private int maxBounces = 4;
|
||||||
|
[SerializeField, Range(0f, 50f)] private float damage = 5f;
|
||||||
|
[SerializeField] private LayerMask beamMask;
|
||||||
|
private const float k_maxBeamDist = 100f;
|
||||||
|
[SerializeField] private LineRenderer beam;
|
||||||
|
[SerializeField, Range(0.01f, 20f)] private float attackSecondsDelay = 1f;
|
||||||
|
|
||||||
|
protected override void Awake()
|
||||||
|
{
|
||||||
|
base.Awake();
|
||||||
|
|
||||||
|
horizontalArc.Value.AddListener(UpdateBeam);
|
||||||
|
verticalArc.Value.AddListener(UpdateBeam);
|
||||||
|
|
||||||
|
StartCoroutine(AttackLoop());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private IEnumerator AttackLoop()
|
||||||
|
{
|
||||||
|
do {
|
||||||
|
Vector3 origin = barrel.Tip.position;
|
||||||
|
Vector3 rayDir = barrel.transform.forward;
|
||||||
|
|
||||||
|
List<Vector3> hitPoints = new();
|
||||||
|
hitPoints.Add(origin);
|
||||||
|
for (int i = 0; i < maxBounces; i++)
|
||||||
|
{
|
||||||
|
Debug.DrawRay(origin, rayDir.normalized * k_maxBeamDist, Color.red, 5f);
|
||||||
|
RaycastHit hit;
|
||||||
|
if (!Physics.Raycast(origin, rayDir, out hit, k_maxBeamDist, beamMask))
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Is damagable?
|
||||||
|
HealthComponent healthComp = hit.collider.gameObject.GetComponent<HealthComponent>();
|
||||||
|
if (healthComp != null)
|
||||||
|
{
|
||||||
|
Debug.Log($"hitting {healthComp.name} {i}");
|
||||||
|
healthComp.TakeDamage(damage);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
hitPoints.Add(hit.point);
|
||||||
|
rayDir = Vector3.Reflect(rayDir, hit.normal);
|
||||||
|
origin = hit.point;
|
||||||
|
}
|
||||||
|
|
||||||
|
beam.positionCount = hitPoints.Count;
|
||||||
|
beam.SetPositions(hitPoints.ToArray());
|
||||||
|
yield return new WaitForSeconds(attackSecondsDelay);
|
||||||
|
} while (true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateBeam(float unused) => UpdateBeam();
|
||||||
|
|
||||||
|
private void UpdateBeam()
|
||||||
|
{
|
||||||
|
|
||||||
|
Vector3 origin = barrel.Tip.position;
|
||||||
|
Vector3 rayDir = barrel.transform.forward;
|
||||||
|
|
||||||
|
List<Vector3> hitPoints = new();
|
||||||
|
hitPoints.Add(origin);
|
||||||
|
for (int i = 0; i < maxBounces; i++)
|
||||||
|
{
|
||||||
|
Debug.DrawRay(origin, rayDir.normalized * k_maxBeamDist, Color.red, 5f);
|
||||||
|
RaycastHit hit;
|
||||||
|
if (!Physics.Raycast(origin, rayDir, out hit, k_maxBeamDist, beamMask))
|
||||||
|
break;
|
||||||
|
|
||||||
|
hitPoints.Add(hit.point);
|
||||||
|
rayDir = Vector3.Reflect(rayDir, hit.normal);
|
||||||
|
origin = hit.point;
|
||||||
|
}
|
||||||
|
|
||||||
|
beam.positionCount = hitPoints.Count;
|
||||||
|
beam.SetPositions(hitPoints.ToArray());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: eee68a5f6c2f68de58dce57219fb9068
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Loading…
Reference in New Issue