Как установить местоположение CC3Node в слое? - PullRequest
1 голос
/ 23 августа 2011

Мне не удалось найти это в документах.

У меня есть CC3Node (myNode), и у моего слоя есть обратные вызовы для событий touchDown и touchMoved, которые до сих пор работают.Я пытаюсь перетащить myNode по экрану, предпочтительно используя экранные координаты.

Как установить местоположение myNode относительно координат экрана (слоя)?

1 Ответ

1 голос
/ 23 августа 2011

Хорошо, я наконец отследил это, хотя кусочки были немного разбросаны по нескольким постам.Мое окончательное решение выглядело примерно так:

MyWorld.m:

// Error checking and misc removed
- (void) addBackgroundForProjection
{
    // background plane supports touch events
    background = [CC3PlaneNode nodeWithName: BACKGROUND_PROJECTION_PLANE_NAME];
    [background populateAsCenteredRectangleWithSize: CGSizeMake(10.0, 10.0)
                                        withTexture: [CC3Texture textureFromFile: @"transparent1x1.png"]
                                      invertTexture: YES];
    [background setIsOpaque: NO];
    [background retainVertexLocations];
    [background setLocation: cc3v(0, 0, 0.001)];

    [self addChild: background];
}

// ...

- (void) moveNode: (CC3Node*) node toScreenLocation: (CGPoint) point
{
    // update node on screen
    CC3Plane groundPlane = self.background.plane;
    CC3Vector4 touchLoc = [self.activeCamera unprojectPoint: point ontoPlane: groundPlane];
    CC3Vector newLoc = cc3v(touchLoc.x,touchLoc.y,touchLoc.z);
    [node setLocation: newLoc];
}
...