【问题标题】:How does one play an animation at a specified angle in cocos2d?cocos2d中如何以指定角度播放动画?
【发布时间】:2012-12-07 03:20:15
【问题描述】:

我制作了这个动画,它是一只手臂从某个人的头顶移动到他身体的中心。手臂边缘到男孩身体中点的距离是一个圆的半径,所以无论男孩的手臂在他的右、左、上,这个距离都是完全一样的,另外,动画是无论手臂从哪个方向到中心,都完全相同。如果只有 4 个攻击方向,我知道我可以制作 4 个不同的动画,但在我的游戏中,手臂可以延伸的方向是无限的,因为用户滑动并且手臂会朝那个方向延伸。

无论手臂伸向哪个方向,相同的动画只是在不同的角度工作(动画是在男孩的手臂正上方制作的)。

我可以计算出手臂伸展的角度,但是如果你明白我的意思,我该如何以这个角度播放动画?

【问题讨论】:

    标签: animation cocos2d-iphone angle


    【解决方案1】:

    好吧,如果你设置动画的第一个精灵的旋转,整个帧数组都会倾斜,就像我的一个游戏中的这个例子:

    CCAnimation *anim;
    NSString *frameName;
    NSString *animName;
    
    anim = [self getAnimationFor:mapAnimationTypeIdle];
    animName = [self getAnimationNameFor:mapAnimationTypeIdle];
    frameName = [self getFrameNameForAnimationNamed:animName andFrame:1];
    CCAction *forever = [CCRepeatForever actionWithAction:
                           [CCAnimate actionWithAnimation:anim]
                        ];
    _soldierAnim = 
        [CCSprite spriteWithSpriteFrame:
           [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:frameName]
        ];
    [self addChild:_soldierAnim z:0 tag:_tagForSoldierAnimation];
    _soldierAnim.rotation=22;
    [_soldierAnim runAction:forever];
    

    我刚刚对此进行了测试,它将整个动画倾斜了 22 度。

    【讨论】:

    • 我是否只创建名为“getAnimationFor”的方法并让它们返回“mapAnimationTypeIdle”?
    • 这是我目前正在开发的游戏的示例……您可能不需要。我拿这个只是为了测试 .rotation 是否会起作用。您可以在此处创建 CCAnimation 并使用它。就我而言,我有很多地图动画(我创建的一个枚举 mapAnimationTypeE 有成员 mapAnimationTypeIdle)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多