首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重叠的LimeJS检测

重叠的LimeJS检测
EN

Stack Overflow用户
提问于 2012-10-22 16:41:31
回答 2查看 568关注 0票数 0

我最近开始使用LimeJS进行游戏开发,我遇到了一些麻烦。

我正在制作一个RTS类型的游戏。我有一些功能,可以让你选择建筑物,然后点击地图,将选择的建筑物添加到地图上。我不希望玩家能够放置一个建筑,如果它与一个已经存在的建筑重叠。我该怎么检查这个?建筑物是精灵,而精灵又作为子级添加到地图精灵中。我正在考虑使用hitTest,但我不太明白这个函数是如何工作的。事件处理程序示例:

代码语言:javascript
复制
goog.events.listen(field,['mousedown'],function build(e){


    if(selected_ == 1){
     var house = new rh.house().setPosition(e.position.x, e.position.y);
     field.appendChild(house);
     selected_ = -1;
     houselbl.setFill('assets/storage.png');
    }  
    if(selected_ == 2){
     var blacksmith = new rh.blacksmith().setPosition(e.position.x, e.position.y);
     field.appendChild(blacksmith);
     selected_ = -1;
     blacksmithlbl.setFill('assets/blacksmith.png');
    }      
    if(selected_ == 3){
     var lumbermill = new rh.lumbermill().setPosition(e.position.x, e.position.y);
     field.appendChild(lumbermill);
     selected_ = -1;
     lumbermilllbl.setFill('assets/lumbermill.png');
   }  
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-22 19:42:42

我把它修好了。我在所有的孩子身上使用了getBoundingBox,并检查了它是否安全。示例如下:

代码语言:javascript
复制
goog.events.listen(field,['mousedown'],function build(e){ 

    if(selected_ == 1){
        var house = new rh.house().setPosition(e.position.x, e.position.y);
        var safe=true;
        for (var i=0;i<field.getNumberOfChildren();i++)
        { 
           var box = field.getChildAt(i).getBoundingBox();
           if (goog.math.Box.intersects(box,house.getBoundingBox())){
           safe=false;
       }
    }
        if (safe){
            field.appendChild(house);
            selected_ = -1;
            houselbl.setFill('assets/storage.png');
        }
    }  
} 
票数 0
EN

Stack Overflow用户

发布于 2013-01-30 04:28:40

您可能还希望将碰撞检查放在scheduleManager中,然后它可以逐帧检查它,如果它重叠,您可以将精灵或建筑设置为红色。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13007698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档