oof ouch owie

This commit is contained in:
reisenlol 2026-01-31 01:28:11 -08:00
parent e29208a2e5
commit 3364b5df68
No known key found for this signature in database
5 changed files with 122 additions and 14 deletions

View file

@ -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}

View file

@ -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

View 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);
}
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: fa1b7388657a56c7a91ace02c52cd5ee

View file

@ -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()
{
} }
} }