Создание настраиваемых контактных делегатов с помощью Xamarin SpriteKit на C #

Я хотел бы переопределить функцию 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 
}

person Rafi Levy    schedule 08.01.2018    source источник
comment
Удалите свой старый вопрос, никогда не рекомендуется задавать один и тот же вопрос дважды. В вашем коде все в порядке, а это значит, что возникают проблемы, например, с тем, как вы настраиваете физическое тело. Вам нужно показать эту информацию.   -  person Knight0fDragon    schedule 09.01.2018
comment
Нет проблем с делегатом, см. здесь   -  person ColeX - MSFT    schedule 09.01.2018