更改对象比例后对撞机无法工作

时间:2019-09-12 15:12:57

标签: unity3d collision-detection collision

在我的2D游戏中,更改其比例后没有对撞机在工作。 我的太空飞船/雪碧被Box Collider 2D包围着。现在,我想使用border,这就是为什么使用Cube和Cylinder对象的原因。我在使用Box collider 2D的地方工作正常。但是,当我更改多维数据集/圆柱体比例时(我的意图是使用一个多维数据集覆盖整个边界),因此它不起作用,我的飞船进入了该多维数据集/圆柱体对象。我也尝试过不同类型的 对撞机,但缩放后没有人在工作。

我在立方体(墙)上使用BoxCollider2D。

我正在检查器中更改多维数据集的变换的局部y比例:

enter image description here

1 个答案:

答案 0 :(得分:0)

由于我没有得到正确的答案,所以我改变了主意,以不同的方式解决问题。 在这里,我使用坐标轴来检查边框。现在我的太空飞船并没有超出屏幕范围。

public Rigidbody2D player;
private Vector2 screenBounds;
private float playerWidth;
private float playerHeight;

void Start()
{
    player = this.GetComponent<Rigidbody2D>();
    screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, Camera.main.transform.position.z));
    playerWidth = transform.GetComponent<SpriteRenderer>().bounds.size.x / 2;
    playerHeight = transform.GetComponent<SpriteRenderer>().bounds.size.y / 2;
}

void FixedUpdate()
{
    MovePlayer();
}

public void MovePlayer()
{
    player.velocity = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
    this.transform.Translate(Input.GetAxis("Horizontal"), 0, 0);

    Vector3 viewPos = transform.position;
    viewPos.x = Mathf.Clamp(viewPos.x, -screenBounds.x + playerWidth, screenBounds.x - playerWidth);
    viewPos.y = Mathf.Clamp(viewPos.y, -screenBounds.y + playerHeight, screenBounds.y - playerHeight);
    transform.position = viewPos;

}