Unity 2d Freezing Player in Position on Collision

I’m currently making a 2d platformer and I need one of my enemies to freeze the player in it’s current position when it collides with the player. I want the player to be unable to move but still able to shoot his gun.

void OnTriggerEnter2D(Collider2D other){
if(other.gameObject.tag == "Player"){

transform.position = target.position;
transform.LookAt(new Vector3 (20, 0, 0));

//code to freeze player in place until enemy dies from player gunfire

if you want to freeze the player, just set its velocity and gravity to 0. Before, you need to add rigidbody2D to the player…

function OnCollisionEnter2D(coll:Collision2D)
       //Do other stuffs


I guess you want collision, so i used OnCollisionEnter2D()…

when using OnTriggerEnter2D make sure the gameobject Boxcollider2D property isTrigger is checked?

For the positions:

rigid.constraints = RigidbodyConstraints2D.FreezePositionX | RigidbodyConstraints2D.FreezePositionY;

For rotation:

Rigidbody2D.constraints = RigidbodyConstraints2D.FreezeRotationZ;

For both:

rigid.constraints = RigidbodyConstraints2D.FreezePositionX | RigidbodyConstraints2D.FreezePositionY | RigidbodyConstraints2D.FreezeRotationZ;

PS. code is not tested.

You could simply do RigidBody2D.velocity = 0;