Rigidbody2D 穿墙

Rigidbody2D goes through walls

我想为玩家添加捡起箱子并四处移动的能力,但是当玩家捡起箱子并碰到墙时,它开始抽动并穿过它。

请告诉我如何解决这个问题。我走投无路了。

这是一个显示我的问题的视频:https://youtu.be/TGt73ASBYpQ

一些代码:

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

P.S。抱歉我的英语不好

您正在修改保持对象的位置,请改用 AddForce 等刚体函数。

事实上,transform.position 创建了一个绝对组件,更改它会创建 point-to-point 位移。 transform 从不考虑物理和碰撞器。使用rigidbody解决问题。

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

如果问题依旧,必须创造条件不上墙

public LayerMask wallLayer; // define layer field

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