oof ouch owie
This commit is contained in:
parent
e29208a2e5
commit
3364b5df68
5 changed files with 122 additions and 14 deletions
|
|
@ -10,9 +10,11 @@ GameObject:
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 4986471857814220672}
|
- component: {fileID: 4986471857814220672}
|
||||||
- component: {fileID: 4250140839191994890}
|
- component: {fileID: 4250140839191994890}
|
||||||
m_Layer: 0
|
- component: {fileID: 4511112775376894642}
|
||||||
|
- component: {fileID: 9142983110258810315}
|
||||||
|
m_Layer: 7
|
||||||
m_Name: BeamObject
|
m_Name: BeamObject
|
||||||
m_TagString: Untagged
|
m_TagString: Friendly
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
|
|
@ -87,3 +89,62 @@ SpriteRenderer:
|
||||||
m_WasSpriteAssigned: 1
|
m_WasSpriteAssigned: 1
|
||||||
m_MaskInteraction: 0
|
m_MaskInteraction: 0
|
||||||
m_SpriteSortPoint: 0
|
m_SpriteSortPoint: 0
|
||||||
|
--- !u!61 &4511112775376894642
|
||||||
|
BoxCollider2D:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6182044071860294324}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_Density: 1
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_LayerOverridePriority: 0
|
||||||
|
m_ForceSendLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_ForceReceiveLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_ContactCaptureLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_CallbackLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_IsTrigger: 1
|
||||||
|
m_UsedByEffector: 0
|
||||||
|
m_CompositeOperation: 0
|
||||||
|
m_CompositeOrder: 0
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_SpriteTilingProperty:
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
oldSize: {x: 1, y: 1}
|
||||||
|
newSize: {x: 1, y: 1}
|
||||||
|
adaptiveTilingThreshold: 0.5
|
||||||
|
drawMode: 0
|
||||||
|
adaptiveTiling: 0
|
||||||
|
m_AutoTiling: 0
|
||||||
|
m_Size: {x: 1, y: 1}
|
||||||
|
m_EdgeRadius: 0
|
||||||
|
--- !u!114 &9142983110258810315
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6182044071860294324}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fa1b7388657a56c7a91ace02c52cd5ee, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
thisLaser: {fileID: 0}
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,9 @@ MonoBehaviour:
|
||||||
length: 100
|
length: 100
|
||||||
width: 2
|
width: 2
|
||||||
duration: 4
|
duration: 4
|
||||||
beamObject: {fileID: 6182044071860294324, guid: 5c95f1061d0b0a13694b57cb8a14866c, type: 3}
|
beamObject: {fileID: 9142983110258810315, guid: 5c95f1061d0b0a13694b57cb8a14866c, type: 3}
|
||||||
turnSpeed: 10
|
turnSpeed: 10
|
||||||
offset: 0.5
|
offset: 0.5
|
||||||
|
enemyList: []
|
||||||
|
damageDebounceTime: 0.5
|
||||||
|
damage: 10
|
||||||
|
|
|
||||||
23
Assets/Scripts/BeamCollider.cs
Normal file
23
Assets/Scripts/BeamCollider.cs
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class BeamCollider : MonoBehaviour
|
||||||
|
{
|
||||||
|
public Laser thisLaser;
|
||||||
|
|
||||||
|
private void OnTriggerEnter2D(Collider2D other)
|
||||||
|
{
|
||||||
|
if (!other.CompareTag(thisLaser.thisPlayer.tag) && other.TryGetComponent(out Entity isEntity))
|
||||||
|
{
|
||||||
|
thisLaser.enemyList.Add(isEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnTriggerExit2D(Collider2D other)
|
||||||
|
{
|
||||||
|
if (!other.CompareTag(thisLaser.thisPlayer.tag) && other.TryGetComponent(out Entity isEntity) && thisLaser.enemyList.Contains(isEntity))
|
||||||
|
{
|
||||||
|
thisLaser.enemyList.Remove(isEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/BeamCollider.cs.meta
Normal file
2
Assets/Scripts/BeamCollider.cs.meta
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fa1b7388657a56c7a91ace02c52cd5ee
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using Core.Extensions;
|
using Core.Extensions;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
@ -10,11 +11,15 @@ public class Laser : PlayerAbility
|
||||||
public float duration;
|
public float duration;
|
||||||
private float currentDuration;
|
private float currentDuration;
|
||||||
[Header("Beam")]
|
[Header("Beam")]
|
||||||
[SerializeField] private GameObject beamObject;
|
[SerializeField] private BeamCollider beamObject;
|
||||||
private GameObject beamObjectInstance;
|
private BeamCollider beamObjectInstance;
|
||||||
public float turnSpeed;
|
public float turnSpeed;
|
||||||
public float offset;
|
public float offset;
|
||||||
|
[Header("Weapon Properties")]
|
||||||
|
[HideInInspector] public List<Entity> enemyList = new();
|
||||||
|
public float damageDebounceTime;
|
||||||
|
private float currentDebounce;
|
||||||
|
public float damage;
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
CreateBeam();
|
CreateBeam();
|
||||||
|
|
@ -24,7 +29,8 @@ public class Laser : PlayerAbility
|
||||||
{
|
{
|
||||||
canCooldown = false;
|
canCooldown = false;
|
||||||
currentDuration = duration;
|
currentDuration = duration;
|
||||||
beamObjectInstance.SetActive(true);
|
currentDebounce = damageDebounceTime;
|
||||||
|
beamObjectInstance.gameObject.SetActive(true);
|
||||||
transform.Lookat2D(thisPlayer.mouseWorldPos);
|
transform.Lookat2D(thisPlayer.mouseWorldPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -36,10 +42,27 @@ public class Laser : PlayerAbility
|
||||||
float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
|
float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
|
||||||
transform.rotation = Quaternion.RotateTowards(beamObjectInstance.transform.rotation, Quaternion.Euler(0,0,angle), turnSpeed * Time.deltaTime);
|
transform.rotation = Quaternion.RotateTowards(beamObjectInstance.transform.rotation, Quaternion.Euler(0,0,angle), turnSpeed * Time.deltaTime);
|
||||||
currentDuration -= Time.deltaTime;
|
currentDuration -= Time.deltaTime;
|
||||||
|
if (currentDebounce > 0)
|
||||||
|
{
|
||||||
|
currentDebounce -= Time.deltaTime;
|
||||||
|
if (currentDebounce <= 0)
|
||||||
|
{
|
||||||
|
foreach (Entity enemy in enemyList.ToArray())
|
||||||
|
{
|
||||||
|
if (!enemy)
|
||||||
|
{
|
||||||
|
enemyList.Remove(enemy);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
enemy.TakeDamage(damage);
|
||||||
|
}
|
||||||
|
currentDebounce = damageDebounceTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (currentDuration <= 0)
|
if (currentDuration <= 0)
|
||||||
{
|
{
|
||||||
canCooldown = true;
|
canCooldown = true;
|
||||||
beamObjectInstance.SetActive(false);
|
beamObjectInstance.gameObject.SetActive(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -50,11 +73,7 @@ public class Laser : PlayerAbility
|
||||||
beamObjectInstance.transform.SetParent(transform);
|
beamObjectInstance.transform.SetParent(transform);
|
||||||
beamObjectInstance.transform.localScale = new Vector3(length, width, 1);
|
beamObjectInstance.transform.localScale = new Vector3(length, width, 1);
|
||||||
beamObjectInstance.transform.Translate(Vector3.right * (beamObjectInstance.transform.localScale.x * 0.5f) + new Vector3(offset, 0, 0));
|
beamObjectInstance.transform.Translate(Vector3.right * (beamObjectInstance.transform.localScale.x * 0.5f) + new Vector3(offset, 0, 0));
|
||||||
beamObjectInstance.SetActive(false);
|
beamObjectInstance.thisLaser = this;
|
||||||
}
|
beamObjectInstance.gameObject.SetActive(false);
|
||||||
|
|
||||||
private void DetectEnemies()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue