在我的2D游戏中,更改其比例后没有对撞机在工作。 我的太空飞船/雪碧被Box Collider 2D包围着。现在,我想使用border,这就是为什么使用Cube和Cylinder对象的原因。我在使用Box collider 2D的地方工作正常。但是,当我更改多维数据集/圆柱体比例时(我的意图是使用一个多维数据集覆盖整个边界),因此它不起作用,我的飞船进入了该多维数据集/圆柱体对象。我也尝试过不同类型的 对撞机,但缩放后没有人在工作。
我在立方体(墙)上使用BoxCollider2D。
我正在检查器中更改多维数据集的变换的局部y比例:
答案 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;
}