ConvertToWorldSpace toma las coordenadas del nodo LOCAL y las convierte a coordenadas mundiales. ConvertToNodeSpace toma las coordenadas WORLD, las convierte en las coordenadas del nodo que realiza la llamada. (Si es así llamar [nodeA convertToWorldSpace:ccp(10,10)]
, se supone que el 10,10) posición (es para un niño de nodoA)
Básicamente, para obtener la posición mundial de cualquier nodo (en cocos2d 3 o posterior) utilizar este código:
CGPoint worldPosition=[node.parent convertToWorldSpace:node.positionInPoints];
yo personalmente he hecho una función para que pueda usar una y otra (añadirlo a la parte superior de cualquier archivo .m/.h y usted lo verá)
static inline CGPoint
worldPosOfNode(CCNode *node){
return [node.parent convertToWorldSpace:node.positionInPoints];
}
y lo uso de esta manera: (myNode puede ser cualquier sprite de cocos2d, etiqueta o lo que sea)
CGPoint worldPosition=worldPosOfNode(myNode);
¿Por qué lo llama de uno de los padres? – stone
La escena representa el mundo, por lo que si le pides que convierta cualquier punto en su espacio, volverá a la misma posición. Por ejemplo, un punto en (80, 80) convertir en la escena volverá (80, 80). En su caso, si convierte la posición de spriteB a través del spriteA aplicará la transformación de spriteA sobre ella. Es decir, su punto en (80, 80) con una transformación de (40, 40) (en caso de que el ancho del spriteA sea de aproximadamente 40px) da una posición mundial de (120, 120). –