Question by
Kanonabe · May 31, 2021 at 01:41 PM ·
collisionrigidbody2daddforce
,Doesn't stop adding force to enemy
I want to add a little push back to my "Brawler" object when it collides with my player object. When it does hit the player it is pushed back, but after the push back it seems like it doesn't stop adding force. The enemy (brawler) will just keep jumping back and forth really quickly after collision. My code:
public class BrawlerMovement : MonoBehaviour
{
Vector2 direction;
float accuracy = 1f;
Rigidbody2D enemyRigid;
[SerializeField]
float speed;
Transform goal;
bool playerHit;
[SerializeField]
float pushBack;
void Start()
{
enemyRigid = this.GetComponent<Rigidbody2D>();
goal = GameObject.FindGameObjectWithTag("Player").GetComponent<Rigidbody2D>().transform;
bool playerHit = false;
}
// Update is called once per frame
void Update()
{
toPlayer();
}
private void OnCollisionEnter2D(Collision2D collision)
{
playerHit = true;
if (collision.gameObject.tag == "Player" && playerHit)
{
enemyRigid.AddForce(-direction * pushBack,ForceMode2D.Impulse);
playerHit = false;
}
}
//Metode som laver en vetor mellem Brawler objektet og spiller objektet
//Den flytter så Brawleren hen mod spilleren
void toPlayer()
{
direction = goal.transform.position - this.transform.position;
print(direction);
if (direction.magnitude > accuracy)
{
enemyRigid.transform.Translate(direction * speed * Time.fixedDeltaTime);
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Unity 5: AddForce Increases power when already being pushed towards a collider. How to make stop? 1 Answer
2D Top-Down Character: How to make my character move using physics? 1 Answer
Spawned objects won't stop moving after instantiating. 2D Top-Down 1 Answer
2d collision not functioning correctly 0 Answers
Dynamic Rigidbody won't collide 1 Answer