Home > database >  Rigidbody2D goes through walls
Rigidbody2D goes through walls

Time:05-29

I want to add the ability for the player to pick up boxes and move them around, but when the player picks up a box and touches a wall, it starts to twitch and go through it.

Please tell me how this can be fixed. I'm at a dead end.

Here is a video displaying my problem: https://youtu.be/TGt73ASBYpQ

Some code:

//The point at which an box is attracted    
attractedTo = player.transform.position   (player.lookDirection * player.itemHoldDistance);
//Attraction
transform.position  = attractedTo - transform.position;

P.S. Sorry for my bad English

CodePudding user response:

You are modifying the position of the held object use the rigidbody functions like AddForce instead.

CodePudding user response:

In fact, transform.position creates an absolute component and changing it creates point-to-point displacement. transform never considers physics and colliders. Use rigidbody to solve the problem.

private Rigidbody2D rigidbody;
public void Start() => rigidbody = GetComponent<Rigidbody2D>();
rigidbody.MovePosition(attractedTo);

If the problem persists, you must create a condition not to be on the wall.

public LayerMask wallLayer; // define layer field

if (boxCollider.IsTouchingLayers(wallLayer.value)) return; // =
  • Related