我正在做一个2D的游戏,游戏会产生类似地下城的房间,房间的墙壁有对撞机,所以玩家无法逃离房间,但是仍然有一些方法可以逃离房间。所以我的问题是:你能让玩家只能在它生成的房间里移动而不能在空的背景上移动吗?2就像对撞机一样在空的背景上阻止移动吗?谢谢
o8x7eapl1#
为可移动位置创建一个层。
为创建的房间,把碰撞器2d如下,并指定他们的层。
然后,像下面的代码一样,确定角色只能在定义的位置移动。
[SerializeField] private LayerMask movableLayer; void Update() { if (Physics2D.OverlapPoint(transform.position, movableLayer)) { Debug.Log("<color=#51FF56>Character can move here..</color>"); } else { Debug.Log("<color=#FF3854>Character can't move here </color>"); } }
为了解决限制角色边界的问题,在移动轴上增加碰撞器检查点,让它检查得更远一点就足够了,这里,根据角色的维度,我考虑了系数.5f。
[SerializeField] private LayerMask movableLayer; private Vector3 inputVector; void Update() { inputVector.x = Input.GetAxisRaw("Horizontal"); inputVector.y = Input.GetAxisRaw("Vertical"); Debug.DrawLine(transform.position+inputVector*.5f, transform.position, Color.cyan); if (Physics2D.OverlapPoint(transform.position+inputVector*.5f, movableLayer.value)) { transform.position += inputVector * Time.deltaTime; } }
1条答案
按热度按时间o8x7eapl1#
为可移动位置创建一个层。
为创建的房间,把碰撞器2d如下,并指定他们的层。
然后,像下面的代码一样,确定角色只能在定义的位置移动。
限于房间框
为了解决限制角色边界的问题,在移动轴上增加碰撞器检查点,让它检查得更远一点就足够了,这里,根据角色的维度,我考虑了系数.5f。