我正在开发使用SpriteKit
开发的基于投射的游戏。
但是,我不知道如何实现物理。
任何人都可以提供有关如何开始实施它的任何提示吗?
答案 0 :(得分:4)
以下是如何了解如何实施此类游戏的想法。
让我们创造一个我们将投掷的球。首先,我们需要一个属性:
@property(nonatomic, strong) SKShapeNode *ball;
然后我们必须为我们的球创建一个SKShapeNode
并设置它的物理主体:
-(id)initWithSize:(CGSize)size
{
if (self = [super initWithSize:size])
{
_ball = [[SKShapeNode alloc] init];
// Create a circle.
CGMutablePathRef circle = CGPathCreateMutable();
CGPathAddArc(circle, NULL, 0,0, 60, 0, M_PI*2, YES);
// Set the shape of our ball and its color.
_ball.path = circle;
_ball.fillColor = [SKColor blueColor];
_ball.position = CGPointMake(200, 200);
// Create a circular physics body.
_ball.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:60];
[self addChild:_ball];
// Create a physics body that borders the screen.
SKPhysicsBody* borderBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
// Set physicsBody of scene to borderBody.
self.physicsBody = borderBody;
}
return self;
}
然后让我们对所需angle
和magnitude
的球施加冲动:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
CGFloat angle = M_PI_4;
CGFloat magnitude = 1000;
[_ball.physicsBody applyImpulse:CGVectorMake(magnitude*cos(angle),
magnitude*sin(angle))];
}
在您的实施中,您需要使用touchesBegan
和touchesMoved
方法计算角度和幅度值,并在touchesEnded
中应用脉冲。
这应该会给你一个启动。希望它有所帮助。