diff --git a/Assets/Player/Player.prefab b/Assets/Player/Player.prefab index dc7e746..800706d 100644 --- a/Assets/Player/Player.prefab +++ b/Assets/Player/Player.prefab @@ -106,8 +106,8 @@ MonoBehaviour: health: 100 maxHealth: 100 moveSpeed: 15 - swingRange: 2 - swingDistance: 10 + swingRangeDeg: 3 + swingDistance: 2 damageStrength: 10 attackCooldownSeconds: 2 dashDistance: 20 diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 7f0dbe7..0682f9b 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -329,7 +329,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6118034672792182209, guid: e05928a0d673caf999d31b31b994a112, type: 3} propertyPath: swingRangeDeg - value: 21.98 + value: 10 objectReference: {fileID: 0} - target: {fileID: 6118034672792182209, guid: e05928a0d673caf999d31b31b994a112, type: 3} propertyPath: distanceIndicator diff --git a/Assets/Scripts C#/Teo.cs b/Assets/Scripts C#/Teo.cs index d99982e..a02fcda 100644 --- a/Assets/Scripts C#/Teo.cs +++ b/Assets/Scripts C#/Teo.cs @@ -43,9 +43,6 @@ public class Teo : MonoBehaviour } } void Attack() { - if (Time.fixedTime-lastAttackTime < attackCooldownSeconds) { - return; - } Instantiate(distanceIndicator, transform); // Get all objects within swingDistance of player Collider2D[] hits = Physics2D.OverlapCircleAll( @@ -55,13 +52,13 @@ public class Teo : MonoBehaviour // Damage all ratbots in scanned area foreach (Collider2D hit in hits) { Ratbot ratbot = hit.GetComponent(); - // If ratbot exists and is within swing range, damage it. - // Calculate absolute difference between angles of ratbot and cursor if (ratbot == null) continue; + // Find the closest point on the ratbot Vector2 hitClosest = Physics2D.ClosestPoint( - transform.position, - hit + transform.position, hit ); + // If ratbot's closest point within swing range, damage it. + // Calculate absolute difference between angles of ratbot and cursor if (Mathf.Abs(Mathf.Atan2( hitClosest.y - transform.position.y, hitClosest.x - transform.position.x @@ -70,22 +67,29 @@ public class Teo : MonoBehaviour Input.mousePosition.x - Screen.width/2 )) > swingRangeDeg * Mathf.Deg2Rad ) continue; - ratbot.Damage(damageStrength); + // Apply a multiplier to damageStrength based on attack cooldown. + // If multiplier > 1, just do damageStrength + // Fuck readability, it's a one liner now + Debug.Log(Mathf.Min(damageStrength * (Time.fixedTime - lastAttackTime)/attackCooldownSeconds, damageStrength)); + ratbot.Damage(Mathf.Min(damageStrength * (Time.fixedTime - lastAttackTime)/attackCooldownSeconds, damageStrength)); } } IEnumerator Dash() { BoxCollider2D collider = GetComponent(); + // Disable collision and linearDamping while dashing lastDashTime = Time.fixedTime; dashing = true; collider.enabled = false; controller.linearDamping = 0; controller.linearVelocity = Vector2.zero; + // Apply a force to player towards mouse cursor controller.AddRelativeForce (new Vector2( Input.mousePosition.x - Screen.width/2, Input.mousePosition.y - Screen.height/2 ).normalized * dashDistance); // Wait 0.2 seconds before ending the dash yield return new WaitForSeconds(0.2F); + // Re enable collision and linearDamping after dash complete dashing = false; collider.enabled = true; controller.linearDamping = 15;