【Unity2D】在点击放置游戏中,如何限制物品的放置条件?比如不能重叠放置、只能在某一范围放置等

如何限制在某一范围内放置?

  • 首先在场景中新建一个空物体。
  • 然后添加Sprite Renderer组件,拖进一张类似放置范围形状的图片,样子无所谓,因为透明度可以设成0,添加碰撞体后还可以删掉。
  • 接着添加碰撞体,碰撞体类型也是根据放置范围的形状需要,并将碰撞体的Is Trigger属性勾选上。

  • 可以开始写代码了,核心代码如下:
    public Collider2D boardA;               // 表示范围的物体引用

    private Vector2 generatePosition;       // 生成位置
    private Bounds boundsA;                 // 范围边界
    private bool isInsideBoundA;            // 判断是否在范围内触碰屏幕

        boundsA = boardA.bounds;            // 获取范围边界

        if (Input.GetMouseButtonDown(0))
        {
            generatePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            isInsideBoundA = boundsA.Contains(generatePosition);    // 核心语句

            if (isInsideBoundA)
                Generate();                 // 在范围内,调用放置函数
        }

 

如何判断是否重叠?

  • 对于每个放置的物体,添加一个同名子物体,该子物体用于表示“不可重叠的范围”。

  • 核心代码如下:
    private bool isInsideOthers;

    Collider2D[] colls = Physics2D.OverlapPointAll(generatePosition);    // 核心语句
    isInsideOthers = false;
    foreach (Collider2D coll in colls)
    {
        if (coll.name == "Unplaceable")
        isInsideOthers = true;
    }
    
    if(!isInsideOthers)
        Generate();            // 若不在重叠范围内,允许放置
发布了153 篇原创文章 · 获赞 184 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Ha1f_Awake/article/details/103108596
今日推荐