[2D] Object Knockback [RPG]

How would I go about creating a knock back for an object based on direction of where the player or enemy attacks?

I believe this would go in something like void onCollisionEnter2D(Collision2D col)

    // vec1 is the player and vec2 is the enemy
    movdir = Mathf.Rad2Deg(Mathf.Atan2(vec1.transform.position.y - vec2.transform.position.y, vec2.transform.position.x - vec1.transform.position.x));
    if (col.gameObject.tag == "Enemy") {
        rb.AddForce(movedir * thrust);  
    }

I believe I got most of it right, but looking for clarification.

You dont need to use circle math just do:

Vector3 moveDir = vec1.transform.position - vec2.transform.position;
moveDir.z =0.0f;
moveDir.normalise();

Wouldn’t you want Vector2 over Vector 3 unless I’m missing something?

The z axis is used for depth on 2d, so you can control sorting order.

1 Like