added: initial combat mechanics

This commit is contained in:
Chris
2025-10-03 13:29:46 -04:00
parent 5b911f9f47
commit d787353706
17 changed files with 910 additions and 23 deletions

View File

@@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using Reset.Units;
using UnityEngine;
public class UnitCombat : MonoBehaviour{
public List<Collider> draggedUnits = new List<Collider>();
private UnitMovementHandler movement;
private Vector3 lastPosition;
private Vector3 positionDelta;
private float lastSpeed;
private float speedDelta;
void Awake(){
movement = GetComponent<UnitMovementHandler>();
}
void Start(){
lastPosition = transform.position;
}
// Update is called once per frame
void Update(){
positionDelta = lastPosition.DirectionTo(transform.position);
speedDelta = Vector3.Distance(lastPosition, transform.position);
lastPosition = transform.position;
foreach (Collider draggedUnit in draggedUnits) {
UnitMovementHandler draggedUnitMovement = draggedUnit.GetComponent<UnitMovementHandler>();
if (!draggedUnitMovement) {
Debug.LogError($"No available UnitMovement on {draggedUnit.name}. Aborting drag on this unit.");
continue;
}
draggedUnitMovement.SetNewDirection((transform.rotation* positionDelta).ToVector2(), 1f, true);
draggedUnitMovement.SetNewSpeed(speedDelta, 1f, true);
draggedUnitMovement.SetNewRotation(Quaternion.LookRotation(transform.position.DirectionTo(draggedUnit.transform.position)), 1f, true);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 7719da98d07bb4848a78904f6da4c355

View File

@@ -1,4 +1,5 @@
using Reset.Core.Tools;
using System;
using Reset.Core.Tools;
using Sirenix.OdinInspector;
using UnityEngine;

View File

@@ -25,7 +25,7 @@ namespace Reset.Units{
[ShowInInspector, PropertyOrder(2), FoldoutGroup("Movement Data", expanded: true), InlineProperty, HideLabel] public UnitMovementData data = new();
// Other
private Quaternion specifiedRotation; // Used for locking a specific direction
public Vector3 specifiedRotation; // Used for locking a specific direction
void Awake(){
controller = GetComponent<CharacterController>();
@@ -51,7 +51,7 @@ namespace Reset.Units{
// Apply movement
DoMovement(resolvedMovement.moveDirection.World, resolvedMovement.gravity, resolvedMovement.moveSpeed, data.gravityScale.Value);
Debug.Log(controller.isGrounded);
DebugOverlayDrawer.ChangeValue("Movement", "Move Direction (Local)", resolvedMovement.moveDirection.Local);
DebugOverlayDrawer.ChangeValue("Movement", "Move Direction (World)", resolvedMovement.moveDirection.World);
}
@@ -256,7 +256,7 @@ namespace Reset.Units{
}
}
public void SetSpecifiedRotation(Quaternion inputRotation){
public void SetSpecifiedRotation(Vector3 inputRotation){
specifiedRotation = inputRotation;
}

View File

@@ -4,7 +4,7 @@ MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 98
executionOrder: 50
icon: {instanceID: 0}
userData:
assetBundleName: