嗨,我正在尝试使用iphone上的加速计做一个简单的游戏。
所以我有一个名为enemyBlock的UIView子类。我在屏幕上放了几个这样的东西。这些块一遍又一遍地使用[UIView animateWithDuration:...]进行扩展和收缩。我有一个UIImageView根据加速度计数据移动 - 这是玩家。
当玩家与敌人接触时,游戏应该重置。 我使用CGRectIntersectsRect(player.frame,enemyblock.frame)来检测是否发生了命中。但是这种行为非常奇怪,因为只有当敌人没有动画时才会发生命中,否则玩家可以直接通过它们。
有关为何发生这种情况的任何线索?
答案 0 :(得分:1)
不是一个答案,但如果您正在编写游戏,我会建议您使用cocos2d。这是我用自己用过的用Objective C编写的一个很棒的游戏引擎。您可以创建精灵的2D场景图。然后编写一个更新方法,定期调用,例如每秒30次。在此更新方法中,您可以逐步更新每个敌人和玩家精灵的位置,并使用CGRectIntersectsRect进行碰撞检查以检测碰撞。希望这会有所帮助。
答案 1 :(得分:1)
动画视图时,它是使用几何体更新的视图的表示层 动画期间的信息。根据您为播放器图层制作动画的方式,尝试
CGRectIntersectsRect(player.frame, enemyblock.layer.presentationLayer.frame)
一切顺利
答案 2 :(得分:0)
CGRect没有检测到UIView和UIImageView的动画期间因此“ CGRectIntersectsRect(player.frame,enemyblock.frame)”没有发挥适当的作用,你面对的是奇怪的事情。我建议你制作UIView的自定义动画,它会对你有用。