所以,我正在制作一个平台游戏的想法(涂鸦跳跃 - 超级跳跃),但在自上而下的观点中,我并没有让玩家上升,我希望它能够向前发展。 我的问题是我无法检测他是否跳过并错过了平台,我没有在这里使用引力,因为它会违背我正在处理的概念。
有什么想法吗?
-(void)didBeginContact:(SKPhysicsContact *)contact
{
if (contact.bodyA.categoryBitMask == KPlatformCategory) {
NSLog(@"Contact");
_currentPosition = (SKSpriteNode *)contact.bodyA.node;
_contact = YES;
}
-(void)didSimulatePhysics
{
if (_contact) {
_player.position = CGPointMake(_currentPosition.position.x, _currentPosition.position.y);
}
}
}
修改
所以我一直在尝试几件事情,这是我最接近的事情。
我做了一些布尔等待一定的时间,然后检查_player.position = _platform.position它是否有效,但它有问题:
@property (nonatomic) bool gameOver;
@property (nonatomic) bool moved;
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
_gameOver = NO;
_moved = NO;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
/* Called when a touch begins */
for (UITouch *touch in touches) {
CGPoint location = [touch locationInNode:self];
SKAction *fly = [SKAction moveByX:self.position.x y:self.position.y + 180 duration:1];
[_player runAction:fly];
_contact = NO;
_moved = YES;
}
}
-(void)didBeginContact:(SKPhysicsContact *)contact
{
if (contact.bodyA.categoryBitMask == KPlatformCategory) {
NSLog(@"Contact");
_currentPosition = (SKSpriteNode *)contact.bodyA.node;
_currentHeight = _currentHeight + 180.0;
_contact = YES;
_moved = NO;
}
-(void)didSimulatePhysics
{
if (_contact) {
_player.position = CGPointMake(_currentPosition.position.x, _currentPosition.position.y);
}
if (_gameOver && _player.position.x != _currentPosition.position.x) {
NSLog(@"Game Over");
_foreGround.scrolling = NO;
}
}
-(void)update:(CFTimeInterval)currentTime {
/* Called before each frame is rendered */
if (_moved) {
SKAction *time = [SKAction waitForDuration:2];
SKAction *gameOver = [SKAction runBlock:^{
_gameOver = YES;
}];
[_player runAction:[SKAction sequence:@[time,gameOver ]]];
}
我第一次点击并与平台联系时,一切都很好,但当我再次跳起并接触时,_gameOver变为真。
任何想法为什么会发生这种情况?
答案 0 :(得分:0)
我已经明白了。
PS:为什么这个社区的人倾向于抨击和批评而不是实际帮助?我觉得,除非这是非常容易或直接的问题,否则人们会忽略或试图表现为所有天才。 (不一定是在谈论那些在这里评论的人,但总的来说)