Cocos2d and iOS: can't figure out how to use breakpoints with ccBezierConfig

EDIT: If the problem is poorly written, watch the video ( 3 ), the same link as at the bottom of this page.

I am trying to draw a very simple grainless curve using ccBezierConfig and Cocos2D. Reading on Wikipedia I tried to understand a few breakpoints and found this image:

http://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Bezier_2_big.png/240px-Bezier_2_big.png

If you look at the wikipedia page with which I took the image, there is a cool animation. Take a look here .

This is the code I used:

CCSprite *r = [CCSprite spriteWithFile:@"hi.png"]; r.anchorPoint = CGPointMake(0.5f, 0.5f); r.position = CGPointMake(0.0f, 200.0f); ccBezierConfig bezier; bezier.controlPoint_1 = CGPointMake(0.0f, 200.0f); bezier.controlPoint_1 = CGPointMake(180.0f, 330.0f); bezier.endPosition = CGPointMake(320.0f,200.0f); id bezierForward = [CCBezierBy actionWithDuration:1 bezier:bezier]; [r runAction:bezierForward]; [self addChild:rz:0 tag:77]; 

The application works in Portrait mode, and my assumptions correspond to control points 1 , and those that were in my code were as follows:

 sprite.position should correspond to P0 bezier.controlPoint_1 should correspond to P0 bezier.controlPoint_2 should correspond to P1 bezier.endPosition should correspond to P2 

I tried two approaches. By setting the position of the sprite and not setting it.

I suggested that the position should be the same as controlPoint_1, as in wikipedia 1 there are only three points.

I get a conclusion that I do not understand. I made a short video about it, this is a personal video on YouTube:

to see the video click here

+1
source share
1 answer

OK, the answer is pretty simple ...

Bezier's quadratic curve is not what cocos2d draws. Instead, check the same wiki page for a cubic Bezier curve . This is what you should watch.

  • The starting position is the position of the sprite (P0)
  • Control points 1 and 2 are P1 and P2, respectively.
  • An endpoint is an endpoint.

Good video, by the way, I liked xD.


Data from the CCActionInterval.h file in the cocos2d library:

 /** An action that moves the target with a cubic Bezier curve by a certain distance. */ @interface CCBezierBy : CCActionInterval <NSCopying> { ccBezierConfig config; CGPoint startPosition; } 

This link should help you build your Bezier cubic curves visually, rather than changing values ​​and launching the application.

+2
source

Source: https://habr.com/ru/post/1498676/


All Articles