Создание пользовательских делегатов контактов с 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 
}

0 ответов

Другие вопросы по тегам