Создание пользовательских делегатов контактов с Xamarin SpriteKit в C#
Я хотел бы переопределить функцию didBeginContact, чтобы реализовать собственную логику, когда два физических объекта в моей сцене сталкиваются.
Я понимаю, как это будет сделано в Swift, сначала установив делегат контакта как сам объект сцены, а затем настроив функцию didBeginContact, как показано ниже:
self.physicsWorld.contactDelegate = self
func didBeginContact(contact: SKPhysicsContact) {
//logic goes here
}
Я не могу понять, как реализовать такую систему при использовании SpriteKit с Xamarin в C#. Я попытался создать пользовательский класс Contact Delegate, который является подклассом 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
}