İşte böyle yapmaya çalıştım.
Bir portalın içindeyken, fizik motorunda oynatıcının iki kopyası olacaktır. Her kopya, portalın karşı tarafındaki tüm çarpışmaları yok sayar ve ardından sonuçları birleştirir ve simülasyon sonuçlarını her iki modele de uygularsınız.
İdeal olarak, yerçekimini oyuncunun her yarısı için ayrı ayrı uygularsınız, ancak oyuncunun kütle merkezinin bulunduğu portalın yanına uygulayarak uzaklaşabilirsiniz.
Bu çarpışmaları yok saymak için uygun bir birim ayarlamanız ve içinde bir nokta olup olmadığını test etmeniz gerekir. Bir silindir (muhtemelen dikey olarak gerilmiş) iyi bir seçenek gibi görünmektedir. Test o zamanif (!collisionPoint.InsideCylinder(portal)) ProcessCollision(); else IgnoreCollision();
Çoğu fizik motorunun, bir nesnenin çarpışabileceği şeyleri filtrelemek için bir sistemi olduğuna inanıyorum, bu yüzden standart bir fizik motoru kullanmak mümkün olmalıdır. Örneğin, http://bulletphysics.org/mediawiki-1.5.8/index.php/Collision_Filtering#Custom_collision_filtering
Sonuçları birleştirmek için en basit seçenek muhtemelen ikisi arasında bir tür esnek olmayan kısıtlama eklemek ve fizik motorunun bunu ele almasına izin vermek olacaktır.