【问题标题】:SpriteKit - Rotate and Jump Both Ending at same TimeSpriteKit - 旋转和跳跃同时结束
【发布时间】:2014-03-14 12:29:10
【问题描述】:

Sprite Kit 和游戏开发新手我正在通过 Following tutorial@Raywenderlich 学习。

WHAT I AM DOING ?

我已经在地图上实现了连续运动,在播放器上实现了重力,我知道可以像这样将旋转动作添加到 SKSpriteNode。

        SKAction *action = [SKAction rotateByAngle:M_PI duration:1];

        [myPlayer runAction:[SKAction repeatActionForever:action]];

我的重力播放器如下

MSPlayer.h

#import <SpriteKit/SpriteKit.h>

@interface MSPlayer : SKSpriteNode
@property (nonatomic, assign) CGPoint velocity;
- (void)update:(NSTimeInterval)delta;
@end

MSPlayer.m

#import "MSPlayer.h"
#import "SKTUtils.h"

@implementation MSPlayer
//2
- (instancetype)initWithImageNamed:(NSString *)name {
    if (self == [super initWithImageNamed:name]) {
        self.velocity = CGPointMake(0.0, 0.0);
    }
    return self;
}

- (void)update:(NSTimeInterval)delta {
    //3
    CGPoint gravity = CGPointMake(0.0, -10.0);
    //4
    CGPoint gravityStep = CGPointMultiplyScalar(gravity, delta);
    //5
    self.velocity = CGPointAdd(self.velocity, gravityStep);
    CGPoint velocityStep = CGPointMultiplyScalar(self.velocity, delta);
    //6
    self.position = CGPointAdd(self.position, velocityStep);
}
-(CGRect)collisionBoundingBox {
    return CGRectInset(self.frame, 2, 0);
}

@end

My Issue is

现在的问题是我希望节点被旋转并让它随着重力而跳跃,并且旋转在节点即将结束它的跳跃之前结束。应该怎么做才能让两个动画同时结束?

【问题讨论】:

  • 你只是想同时结束还是让一个跳跃只同步一个旋转动画?
  • 我希望旋转和动画同步并同时结束。
  • 然后你必须计算你跳跃需要多长时间才能着陆(基于重力值),或者你可以有一个跳跃动画和一个着陆动画,这更容易计算和实施
  • 第二个选项似乎好多了。你能帮我解决第二个选项吗?
  • 只需在你跳起来的时候开始一个旋转动作,并保持到你的顶点,当速度向负方向移动后,开始一个着陆动画。如果你必须让它完全同步,你必须自己计算下一帧和位置,并计算玩家到达地面需要多少时间

标签: ios iphone sprite-kit game-physics skspritenode


【解决方案1】:

为跳跃编写另一个 runAction

[myPlayer runAction:[SKAction repeatActionForever:runAction]];

在此处定义 runAction。

【讨论】:

  • 我不想连续旋转节点,也不想让节点连续跳跃
猜你喜欢
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多