From 43283e4c1bdcc5bbce62983fd1f0c33b8130ed94 Mon Sep 17 00:00:00 2001 From: Joshua Reason Date: Mon, 17 Feb 2020 21:30:31 +1100 Subject: [PATCH] Fixed mushrooms + hammer direction hit --- Assets/Scripts/BlackHole.cs | 9 +++++++++ Assets/Scripts/HammerController.cs | 18 +++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Assets/Scripts/BlackHole.cs b/Assets/Scripts/BlackHole.cs index 460f05e..9cf325e 100644 --- a/Assets/Scripts/BlackHole.cs +++ b/Assets/Scripts/BlackHole.cs @@ -10,11 +10,20 @@ public class BlackHole : MonoBehaviour private void OnTriggerStay(Collider other) { + + var ball = other.GetComponent(); + if (ball != null) + ball.EatHorse = false; + + var horse = other.GetComponent(); if (horse != null) { horse.AddForce((Vector3.up * 2 + transform.forward) * Force); + return; } + + } } diff --git a/Assets/Scripts/HammerController.cs b/Assets/Scripts/HammerController.cs index 4a52062..8c29f5b 100644 --- a/Assets/Scripts/HammerController.cs +++ b/Assets/Scripts/HammerController.cs @@ -21,6 +21,7 @@ public class HammerController : MonoBehaviour private float Speed; private Vector3 startDir; + private Vector3 lastHitDir; private void Start() { @@ -33,23 +34,30 @@ public class HammerController : MonoBehaviour void FixedUpdate() { float ratio = (Mathf.Sin(Time.time * Speed) + 1) / 2; + float ratioOffset = (Mathf.Cos(Time.time * Speed) + 1) / 2; + transform.forward = Quaternion.AngleAxis(Mathf.Lerp(AngleLimit.x, AngleLimit.y, ratio), transform.parent.TransformDirection(RotationAxis)) * startDir; - Vector3 hitDirection = Quaternion.AngleAxis(Mathf.Lerp(AngleLimit.x, AngleLimit.y, ratio), transform.parent.TransformDirection(RotationAxis)) * transform.parent.TransformDirection(HitDirection) * -(Mathf.Cos(Time.time * Speed)); + lastHitDir = Quaternion.AngleAxis(Mathf.Lerp(AngleLimit.x, AngleLimit.y, ratio), transform.parent.TransformDirection(RotationAxis)) * transform.parent.TransformDirection(HitDirection) * -Mathf.Sign(Mathf.Lerp(AngleLimit.x, AngleLimit.y, ratioOffset)); - Debug.DrawRay(transform.position, hitDirection * Force, Color.green); + Debug.DrawRay(transform.position, lastHitDir * Force, Color.green); } private void OnTriggerStay(Collider other) { + + var ball = other.GetComponent(); + if (ball != null) + ball.EatHorse = false; + var horse = other.GetComponent(); if (horse != null) { - float ratio = (Mathf.Sin(Time.time * Speed) + 1) / 2; - Vector3 hitDirection = Quaternion.AngleAxis(Mathf.Lerp(AngleLimit.x, AngleLimit.y, ratio), transform.parent.TransformDirection(RotationAxis)) * transform.parent.TransformDirection(HitDirection) * -(Mathf.Cos(Time.time * Speed)); - horse.AddForce((hitDirection.normalized + Vector3.up) * Force); + horse.AddForce((lastHitDir.normalized + Vector3.up) * Force); Debug.Log("Hitting horse"); + return; } + } }