Я хотел бы переопределить функцию didBeginContact, чтобы реализовать настраиваемую логику, когда два физических объекта в моей сцене сталкиваются.
Я понимаю, как это можно сделать в Swift, сначала установив контактный делегат как сам объект сцены, а затем настроив функцию didBeginContact, как показано ниже:
self.physicsWorld.contactDelegate = self
func didBeginContact(contact: SKPhysicsContact) {
//logic goes here
}
Я не могу понять, как реализовать такую систему при использовании SpriteKit с Xamarin на C #. Я попытался создать собственный класс контактного делегата, который является подклассом SKPhysicsContactDelegate, и установить свойство PhysicsWorld.ContactDelegate сцены как экземпляр этого класса, но я не заметил никаких изменений при запуске моего приложения.
public class CollisionDelegate : SKPhysicsContactDelegate
{
public override void DidBeginContact(SKPhysicsContact contact)
{
if (contact.BodyA.CategoryBitMask == 1 &&
contact.BodyB.CategoryBitMask == 3)
{
contact.BodyB.Node.RemoveFromParent();
}
else if (contact.BodyA.CategoryBitMask == 3 &&
contact.BodyB.CategoryBitMask == 1)
{
contact.BodyA.Node.RemoveFromParent();
}
}
}
Затем в моем классе SKScene:
public override void DidMoveToView(SKView view)
{
PhysicsWorld.ContactDelegate = new CollisionDelegate();
//Other scene initilaisation
}