ios - 也围绕自身中心旋转物体吗?

标签 ios math cocos2d-iphone linear-algebra

star.rotation += star.speed;
float angleRadian = star.rotation * PI_DIV_180;
star.position = ccp(windowSize.width/2 + (star.radius * sinf(angleRadian)), windowSize.height/2 + (star.radius * cosf(angleRadian)));

上面是在调用每一帧时沿窗口中心点旋转 star Sprite 。 anchor 是星形的中心。我怎样才能让星星也沿着自身中心旋转?

最佳答案

您想要相互绕轨道运行并绕自己的轴自转/自转的物体吗?是这样的吗?

旋转测试.h

@interface RotationTest : CCLayer
{
    CCSprite *star;
    CCSprite *planet;
    CCSprite *satellite;

    float dist_star_planet;
    float dist_planet_satellite;

    float relative_angle_star_planet;
    float relative_angle_planet_satellite;
}

@end

旋转测试.m

#import "RotationTest.h"

@implementation RotationTest

-(id) init
{
    if( (self=[super init]))
    {
        CGSize s = [[CCDirector sharedDirector] winSize];

        star = [CCSprite spriteWithFile:@"Icon.png"];
        planet = [CCSprite spriteWithFile:@"Icon.png"];
        satellite = [CCSprite spriteWithFile:@"Icon.png"];

        [self addChild: star];
        [self addChild:planet];
        [self addChild:satellite];

        star.position = ccp(s.width / 2.0f, s.height / 2.0f);
        planet.position = ccpAdd(star.position, ccp(100.0f, 0.0f));
        satellite.position = ccpAdd(planet.position, ccp(50.0f, 0.0f));

        star.scale = 0.5f;
        planet.scale = 0.35f;
        satellite.scale = 0.2f;

        dist_star_planet = ccpDistance(planet.position, star.position);
        dist_planet_satellite = ccpDistance(satellite.position, planet.position);

        relative_angle_star_planet = 0.0f;
        relative_angle_planet_satellite = 0.0f;

        [self scheduleUpdate];
    }
    return self;
}

-(void) update:(ccTime) dt
{
    star.rotation += 1.0f; // degs
    planet.rotation -= 1.0f;
    satellite.rotation += 2.0f;

    relative_angle_star_planet += 0.01f; // rads
    relative_angle_planet_satellite -= 0.01f;

    planet.position = ccpAdd(star.position, ccp(dist_star_planet * sinf(relative_angle_star_planet), dist_star_planet * cosf(relative_angle_star_planet)));
    satellite.position = ccpAdd(planet.position, ccp(dist_planet_satellite * sinf(relative_angle_planet_satellite), dist_planet_satellite * cosf(relative_angle_planet_satellite)));
}

@end

关于ios - 也围绕自身中心旋转物体吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19244582/

相关文章:

ios - 在内容提要尚未上线时发布 iOS 应用程序更新

python - Pygame - 鼠标移动时变换屏幕

java - LibGDX batch.draw() 旋转和 atan2() 角度兼容性?

ios - 如何在 cocos2d 中创建带编号的有序文本?

iphone - 如何知道xcode中方法的返回类型? - iPhone开发

iOS 在 webview 中没有互联网连接时显示警报

ios - 如何知道 UIBarButtonItem 选择器的名称

java - 增量数学问题

iphone - 如何在当前类中实现另一个类的init?

iphone - iOS 帮助 : loaded the nib but the view outlet was not set