我是 SpriteKit 的新手,游戏开发者,事实上我只是在学习。所以我到了一个点,我应该将一堆节点移动到用户点击位置。到目前为止,我一直在努力计算一个虚拟的直角三角形,并根据边得到角的 sin 和 cos。不幸的是,这让我产生了一种非常强烈的冲动,并没有真正考虑用户的点击位置。
有任何想法吗?
提前致谢。
我是 SpriteKit 的新手,游戏开发者,事实上我只是在学习。所以我到了一个点,我应该将一堆节点移动到用户点击位置。到目前为止,我一直在努力计算一个虚拟的直角三角形,并根据边得到角的 sin 和 cos。不幸的是,这让我产生了一种非常强烈的冲动,并没有真正考虑用户的点击位置。
有任何想法吗?
提前致谢。
在此处查看 Ray Wenderlich 教程中的射击弹丸部分:
http://www.raywenderlich.com/42699/spritekit-tutorial-for-beginners
将教程中的代码更改如下:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
// 1 - Choose one of the touches to work with
UITouch * touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
// 2 - Set up initial location of projectile
SKSpriteNode * projectile = [self childNodeWithName:@"desirednode"];
//make projectile point to your desired node.
// 3- Determine offset of location to projectile
CGPoint offset = rwSub(location, projectile.position);
// 4 - Bail out if you are shooting down or backwards. You can ignore this if required.
if (offset.x <= 0) return;
// 5 - OK to add now - we've double checked position
[self addChild:projectile];
// 6 - Get the direction of where to shoot
CGPoint direction = rwNormalize(offset);
// 7 - Make it shoot far enough to be guaranteed off screen
float forceValue = 200; //Edit this value to get the desired force.
CGPoint shootAmount = rwMult(direction, forceValue);
//8 - Convert the point to a vector
CGVector impulseVector = CGVectorMake(shootAmount.x, shootAmount.y);
//This vector is the impulse you are looking for.
//9 - Apply impulse to node.
[projectile.physicsBody applyImpulse:impulseVector];
}
代码中的 projectile 对象代表您的节点。此外,您将需要编辑 forceValue 以获得所需的脉冲。