2012-10-22 6 views
0

최근 게임 개발에 LimeJS를 사용하기 시작했고, 나는 약간의 어려움을 겪었습니다.중첩을위한 LimeJS 감지

저는 RTS 유형의 게임을 만들고 있습니다. 건물을 선택한 다음지도를 클릭하여 선택한 건물을지도에 추가 할 수있는 기능이 있습니다. 플레이어가 이미있는 건물과 겹치면 건물을 배치 할 수 없길 원합니다. 이걸 어떻게 확인할까요? 건물은 스프라이트이며, 스프라이트는지도 스프라이트의 자식으로 추가됩니다. hitTest를 사용하려고 생각했지만 어떻게 작동하는지 알 수 없습니다. 이벤트 처리기의 예 :

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'); 
    } 
}); 

답변

0

나는 그것을 얻었다. 모든 자식에 대해 getBoundingBox를 사용하고 안전한지 확인했습니다. 아래 예 : 또한 scheduleManager에 그 충돌 체크를 넣어 할 수 있습니다

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'); 
     } 
    } 
} 
1

, 그것은 다음 프레임으로 프레임을 확인할 수 있습니다 당신은 스프라이트하거나 중복 않는 경우 빨간색 건물을 돌 수 있었다.