WORKING ARCHERS + test

big drip
This commit is contained in:
Crizomb 2025-01-15 01:46:16 +01:00
parent ca7ce8e645
commit 95943c415c
6 changed files with 853 additions and 5 deletions

View file

@ -1,3 +1,4 @@
using Unity.VisualScripting;
using UnityEngine;
/// <summary>
@ -9,6 +10,7 @@ public class ArrowHandler : MonoBehaviour
[SerializeField] private float baseDamage;
[SerializeField] private float baseKnockback;
private Rigidbody _rigidBody;
private bool _fromTeamA;
void Awake()
{
@ -21,9 +23,10 @@ public class ArrowHandler : MonoBehaviour
if (_rigidBody.linearVelocity.magnitude >= 1f) transform.forward = _rigidBody.linearVelocity.normalized;
}
public void LaunchArrow(Vector3 baseSpeed)
public void LaunchArrow(Vector3 baseSpeed, bool fromTeamA)
{
_rigidBody.linearVelocity = baseSpeed;
_fromTeamA = fromTeamA;
}
void OnCollisionEnter(Collision collision)
@ -31,7 +34,7 @@ public class ArrowHandler : MonoBehaviour
// Can be optimized with tags, but it add dependance beetween teams
if (collision.gameObject.TryGetComponent<AbstractUnit>(out AbstractUnit unit))
{
if (unit is MinecraftUnit)
if (unit is MinecraftUnit && unit.IsTeamA != _fromTeamA) // No friendly fire
{
MinecraftUnit minecraftUnit = unit as MinecraftUnit;
Vector3 knockback = _rigidBody.linearVelocity * baseKnockback;

View file

@ -24,7 +24,7 @@ public class AttackSkeleton : AttackHandler
Vector3 diffVector = Vector3.ProjectOnPlane(targetUnit.transform.position - spawnPos.position, Vector3.up);
Vector3 launchVectorNormalized = (localLaunchVector.x * diffVector.normalized + localLaunchVector.y * Vector3.up).normalized;
arrowHandler.LaunchArrow(launchVectorNormalized * arrowBaseSpeed);
arrowHandler.LaunchArrow(launchVectorNormalized * arrowBaseSpeed, _minecraftUnit.IsTeamA);
return true;
}