我在levelHelper软件中开发了一个场景。但是现在我陷入了如何检查玩家/英雄精灵是否被敌人击中的部分,就像它从上,下,左,右击中一样。我想这样做b / c我希望玩家在从左,右,向下击中时死亡。但如果它从上升中击中敌人应该像超级马里奥游戏一样摧毁。所以我怎么能这样做直到现在我正在检查如果玩家的y位置大于敌人而不是意味着它从上方击中。但是我在我的场景中遇到问题,其中敌人精灵比玩家小一点,所以它的位置总是小于玩家,而且它的宽度也是如此,所以我使用什么公式或方法来提前发生这件事。
答案 0 :(得分:0)
你查过文件了吗? http://www.gamedevhelper.com/documentation/documentation.html> LHContactInfo类
基本上你应该在SpriteHelper中创建灯具,你可以像提供的示例代码一样检查碰撞..
NSString* fixNameA = [contact fixtureNameA];
NSString* fixNameB = [contact fixtureNameB];
if(fixNameA != NULL &&
([fixNameA isEqualToString:@"LegRight"] || [fixNameA isEqualToString:@"LegLeft"]))
{
//apply 30% damage
}
if(fixNameA != NULL &&
([fixNameA isEqualToString:@"RightArm"] || [fixNameA isEqualToString:@"LeftArm"]))
{
//apply 50% damage
}
if(fixNameA != NULL && [fixNameA isEqualToString:@"Head"])
{
//apply 100% damage
}
答案 1 :(得分:0)
if ( player.position.y > enemy.position.y && fabs( player.position.x - enemy.position.x ) < enemy.size.width / 2 ) {
这将确保玩家不仅高于敌人,而且玩家处于同一水平空间。基本上,它只会在你从上面击中敌人时触发,而不是从侧面或下面击中。