Показать сообщение отдельно
Старый 30.07.2009, 18:47   #1
FLashMP
Оператор ЭВМ
 
Регистрация: 02.07.2007
Сообщений: 47
Написано 0 полезных сообщений
(для 0 пользователей)
Сообщение Старая песня о главном: Collision

Перерыл много материала на форуме, но ответа так и не нашел. Возможно плохо искал, но все же прошу помощи, ибо уже 3й день мучусь...

есть коллизия:
Collisions CBullet,CEnemy,3,2 ;3,1;2,2 (пробовал разные варианты)
Collisions CEnemy,CBullet,3,3 ;3,1;2,2

есть анимированные модели, которые движутся на игрока:
enemy.Tenemy = New Tenemy
enemy\ent = CopyEntity(enemyTypes\ent)
EntityType enemy\ent,CEnemy,True
enemy\anim = FindChild(enemy\ent,"Sphere01")
Animate enemy\anim,1,2
Next

есть обработка коллизии:
Function OnCollision()
;for enemies
For enemy.TEnemy = Each TEnemy
If EntityCollided(enemy\ent,CBullet) Then
GameInfo\score=GameInfo\score+50
For bullet.Tbullet = Each TBullet
If EntityCollided( bullet\ent,CEnemy) Then
DeleteBullet()
DeleteEnemy()
EndIf
Next
EndIf
Next


;bullets to enemies
For bullet.Tbullet = Each TBullet
If EntityCollided( bullet\ent,CEnemy) Then
DebugLog "12345"
For enemy.TEnemy = Each TEnemy
If (EntityCollided(enemy\ent,CBullet)) Then
GameInfo\score=GameInfo\score+50
DeleteBullet()
DeleteEnemy()
;DebugLog "collided"
EndIf
Next
EndIf
Next

End Function

И пули и враги движутся одновременно.
Проблема в том, что это всё очень коряво работает, а именно: если пуля попадает в центр модели врага, то он с горем пополам удаляется и все работает. Но если же пуля проходит чуть сбоку, то начинает скользить по нему и коллизия вроде бы как и срабатывает (поскольку есть скольжение), но никакое удаление ни пули ни врага не происходит.
+ если одновременно в одного врага попадают 2 пули, выбивает ошибку, что не может удалить enemy\ent, поскольку его уже нет.
Не знаю что уже и делать с этим. Перепробовал много вариантов, но толку мало.
Если кто подскажет, как решить проблему или как обойтись без коллизии, буду очень благодарен.
(Offline)
 
Ответить с цитированием