2014-09-12 3 views

답변

0

리스너

이벤트 -> 목표를 (추가 할 때 장면 그래프 우선 순위를 사용 있는지 확인하십시오) 당신에게 스프라이트를 줄 것이다

0

당신의 씬이 이벤트를 듣고 있다면, event-> target()은 당신에게 기본 노드를 줄 것이다. 만져진 사람이 아닙니다. 그럴 경우 어떤 형태의 접촉 감지가 필요합니다 (rect를 확인하거나 반경 < = 거리 확인을 수행하거나보다 복잡한 알고리즘 - 모든 상황에 따라 다름).

개체가 이벤트를 수신하는 경우 event-> target()을 사용할 수 있지만 터치 이벤트 시스템이 터치가 성공적인지 여부를 알 수 있도록 어떤 형태의 충돌 감지도 필요합니다. 내가 아는 한, 코코스는 당신을 위해 그 수표를 수행하지 않습니다. 예를 들어 (논리가 다를 수 있습니다. 예를 들어 터치 중 하나 이상이 경계 상자 또는 기타 등등과 충돌하는 경우 터치를 고려하여 개체를 만질 수 있습니다) :

void Break::onTouchesBegan(const std::vector<Touch*>& touch, Event* event) 
{ 
    //If at least one touch doesn't touch the object - then there is no touch 
    for(auto& t : touch){ 
     if(!COLLISION_CHECK){ 
      return false; 
     } 
    } 
    return true; 
    //OR 
    //If at least one touch touches the object, then there is a touch 
    for(auto& t : touch){ 
     if(COLLISION_CHECK){ 
      return true; 
     } 
    } 
    return false; 
}