- Home /
Knock back force is not stopping
Hello everyone, I have been watching a Udemy course for building an FPS game. In the Knock back force section after I implemented it and tried to test it, The moment the player get hit the knock back effect never ends and the player keeps getting pushed away. What may be the problem??
the code for the Player:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Player : MonoBehaviour {
[Header("Visuals")]
public Camera playerCamera;
[Header("Gameplay")]
public int initialHealth = 100;
public int initialAmmo = 12;
public float knockBackForce = 50;
public float hurtDuration = 0.5f;
private int health;
public int Health { get {return health;} }
private int ammo;
public int Ammo { get { return ammo;} }
private bool isHurt;
// Start is called before the first frame update
void Start()
{
ammo = initialAmmo;
health = initialHealth;
}
// Update is called once per frame
void Update()
{
if ( Input.GetMouseButtonDown(0)){
if(ammo > 0){
ammo--;
GameObject bulletObject = ObjectPoolingManager.Instance.GetBullet(true);
bulletObject.transform.position = playerCamera.transform.position + playerCamera.transform.forward; //The bulletObject starting from the players position and with an offset
bulletObject.transform.forward = playerCamera.transform.forward;
}
}
}
//check for collisions
void OnTriggerEnter(Collider OtherCollider){
if (OtherCollider.GetComponent<AmmoCrate>() != null){
//Collect ammoCrate
AmmoCrate ammoCrate = OtherCollider.GetComponent<AmmoCrate>();
ammo += ammoCrate.ammo;
Destroy(ammoCrate.gameObject);
}
if (isHurt == false){
GameObject hazard = null;
if(OtherCollider.GetComponent<Enemy>() != null){
//Collide with enemies
Enemy enemy = OtherCollider.GetComponent<Enemy>();
hazard = enemy.gameObject;
health -= enemy.damage;
}
else if(OtherCollider.GetComponent<Bullet> () != null){
Bullet bullet = OtherCollider.GetComponent<Bullet> ();
if(bullet.ShotByPlayer == false){
hazard = bullet.gameObject;
health -= bullet.damage;
bullet.gameObject.SetActive(false);
}
}
if (hazard != null){
isHurt = true;
//Perform the knock back effect
Vector3 hurtDirection = (transform.position - hazard.transform.position).normalized;
Vector3 knockBackDirection = (hurtDirection + Vector3.up).normalized;
GetComponent<ForceReceiver> ().AddForce(knockBackDirection, knockBackForce);
StartCoroutine (HurtRoutine());
}
}
}
IEnumerator HurtRoutine(){
isHurt = false;
yield return new WaitForSeconds (hurtDuration);
}
}
try with less force.. also the addforce might be happening a few times through multiple collisions.. Use debug logs.
Your answer
Follow this Question
Related Questions
How To Add A FX When I Teleport. 0 Answers
Is there a working transparent reflective shader avaliable? 2 Answers
Game Lighting issue 0 Answers
does unity 5 pitch shifter audio effect change playback speed? 1 Answer
Blink Emission 0 Answers