你好.
我在Sprite Kit中遇到了这个奇怪的问题.我正在使用nodeAtPoint并categoryBitMask在调用跳转方法时检测玩家是否正在接触地面.
一切都在发挥作用.但是 - 为了在抽屉中显示一些可选按钮 - 当我移动父节点时SKAction moveTo:CGPoint(我有地面和玩家作为孩子SKNode),玩家不会跳跃.我NSLog pointBelowPlayer,它和以前一样,但是blockNode.physicsBody为空!这可能是Sprite Kit中的一个错误,还是我遗漏了一些关于继承和位置的基本信息?
跳跃的方法:
-(void)playerJump {
// Player jump if on ground
CGPoint pointBelowPlayer = CGPointMake(_player.position.x, _player.position.y-_player.size.height);
SKNode *blockNode = [self nodeAtPoint:pointBelowPlayer];
if (blockNode.physicsBody.categoryBitMask == groundCategory){
[_player.physicsBody applyImpulse:CGVectorMake(0, 120.0f)];
}
}
Run Code Online (Sandbox Code Playgroud)
移动父节点的方法:
-(void)toggleDrawer {
if (bDrawerVisible) {
[_actionLayer runAction:[SKAction moveTo:CGPointMake(0, 0) duration:1]];
bDrawerVisible = false;
} else {
[_actionLayer runAction:[SKAction moveTo:CGPointMake(0, 200) duration:1]];
bDrawerVisible = true;
}
}
Run Code Online (Sandbox Code Playgroud)
创建SpriteNodes:
-(id)initWithSize:(CGSize)size { …Run Code Online (Sandbox Code Playgroud) 假设我有一个带有文本文件的全新项目.我跑:
git init
git add *
git commit -m 'Initial commit'
Run Code Online (Sandbox Code Playgroud)
然后创建一个新分支:
git checkout -b new_branch
Run Code Online (Sandbox Code Playgroud)
回到主人:
git checkout master
Run Code Online (Sandbox Code Playgroud)
如果我现在更改我的文本文件,然后在没有提交的情况下运行:
git checkout new_branch
Run Code Online (Sandbox Code Playgroud)
文件new_branch也改变了!为什么是这样?他们都指向相同的提交(相同的哈希),但它仍然感觉违反直觉,变化master也会改变new_branch.当我期望new_branch与创建时相同时,我对git的理解是否有缺陷?
(PS:我不是要求如何创建一个新分支或如何使用分支保存我的工作,我只是对这种特定环境中的gits行为感到困惑,并希望更好地理解其逻辑)