void FixedUpdate() { if (CheckForSwing()) { Swing(); } maxAttackTime = stats.GetAttackTime() * wep.attackTime; if (!isSwinging) { currentAttackTime = maxAttackTime; } //Multiply by -1 to make it rotate the right way degreesPerSec = -1 * totalDegrees / maxAttackTime; if (isSwinging) { currentAttackTime -= Time.fixedDeltaTime; currentSwingRot.y += degreesPerSec * Time.fixedDeltaTime; if (currentAttackTime <= 0) { currentAttackTime = maxAttackTime; isSwinging = false; currentSwingRot = idleRot; weaponTransform.localPosition = idlePos; dmgDealer.ResetHitList(); //TODO - MAKE AN IDLE POSITION/ANIMATION } } weaponTransform.localRotation = Quaternion.Euler(currentSwingRot); }