Xamarin.iOS'ta SpriteKit
Apple'ın 2B grafik çerçevesi SpriteKit, iOS 8 ve OS X Yosemite'da bazı ilginç yeni özelliklere sahiptir. Bunlar Arasında SceneKit ile tümleştirme, gölgelendirici desteği, aydınlatma, gölgeler, kısıtlamalar, normal harita oluşturma ve fizik geliştirmeleri yer alır. Özellikle, yeni fizik özellikleri bir oyuna gerçekçi efektler eklemeyi çok kolaylaştırır.
Fizik Gövdeleri
SpriteKit, 2B, katı vücut fiziği API'sini içerir. Her sprite, kütle ve sürtünme gibi fizik özelliklerini ve fizik dünyasındaki vücudun geometrisini tanımlayan ilişkili bir fizik gövdesine (SKPhysicsBody
) sahiptir.
Dokudan Fizik Gövdesi Oluşturma
SpriteKit artık bir spritenin fizik gövdesinin dokusundan türetilmesine destek oluyor. Bu, daha doğal görünen çakışmaları uygulamayı kolaylaştırır.
Örneğin, aşağıdaki çarpışmada muz ve maymunun neredeyse her görüntünün yüzeyinde nasıl çarpıştağına dikkat edin:
SpriteKit, tek bir kod satırıyla böyle bir fizik gövdesi oluşturmayı mümkün kılar. Doku ve boyut ile çağırmanız SKPhysicsBody.Create
yeterlidir: sprite. PhysicsBody = SKPhysicsBody.Create (sprite. Doku, sprite. Boyut);
Alfa Eşiği
Özelliği doğrudan dokudan türetilen geometriye ayarlamaya PhysicsBody
ek olarak, uygulamalar geometrinin nasıl türetilmiş olduğunu denetlemek için ve alfa eşiğini ayarlayabilir.
Alfa eşiği, bir pikselin sonuçta elde edilen fizik gövdesine dahil edilmesi gereken en düşük alfa değerini tanımlar. Örneğin, aşağıdaki kod biraz farklı bir fizik gövdesine neden olur:
sprite.PhysicsBody = SKPhysicsBody.Create (sprite.Texture, 0.7f, sprite.Size);
Alfa eşiğini ayarlamanın etkisi, önceki çarpışmayı ince ayarlar, böylece maymun muzla çarpışırken devrilir:
Fizik Alanları
SpriteKit'e bir diğer harika ekleme de yeni fizik alanı desteğidir. Bunlar yalnızca birkaçını adlandırmak için girdap alanları, radyal yerçekimi alanları ve yay alanları gibi öğeleri eklemenize olanak sağlar.
Fizik alanları, aynı diğer SKNode
gibi bir görünüme eklenen SKFieldNode sınıfı kullanılarak oluşturulur. Farklı fizik alanları oluşturmak için çeşitli SKFieldNode
fabrika yöntemleri vardır. çağırarak SKFieldNode.CreateSpringField()
bir yay alanı oluşturabilirsiniz, çağırarak SKFieldNode.CreateRadialGravityField()
bir radyal yerçekimi alanı, vb.
SKFieldNode
ayrıca alan gücü, alan bölgesi ve alan kuvvetlerinin hafifletilmesi gibi alan özniteliklerini denetlemek için özelliklere sahiptir.
Bahar Tarlası
Örneğin, aşağıdaki kod bir yay alanı oluşturur ve sahnesine ekler:
SKFieldNode fieldNode = SKFieldNode.CreateSpringField ();
fieldNode.Enabled = true;
fieldNode.Position = new PointF (Size.Width / 2, Size.Height / 2);
fieldNode.Strength = 0.5f;
fieldNode.Region = new SKRegion(Frame.Size);
AddChild (fieldNode);
Ardından sprite ekleyebilir ve özelliklerini, kullanıcı ekrana dokunduğunda aşağıdaki kodda olduğu gibi fizik alanının sprite'leri etkilemesi için ayarlayabilirsiniz PhysicsBody
:
public override void TouchesBegan (NSSet touches, UIEvent evt)
{
var touch = touches.AnyObject as UITouch;
var pt = touch.LocationInNode (this);
var node = SKSpriteNode.FromImageNamed ("TinyBanana");
node.PhysicsBody = SKPhysicsBody.Create (node.Texture, node.Size);
node.PhysicsBody.AffectedByGravity = false;
node.PhysicsBody.AllowsRotation = true;
node.PhysicsBody.Mass = 0.03f;
node.Position = pt;
AddChild (node);
}
Bu, muzların alan düğümü çevresinde bir yay gibi salınmalarına neden olur:
Radyal Yerçekimi Alanı
Farklı bir alan eklemek benzerdir. Örneğin, aşağıdaki kod bir radyal yerçekimi alanı oluşturur:
SKFieldNode fieldNode = SKFieldNode.CreateRadialGravityField ();
fieldNode.Enabled = true;
fieldNode.Position = new PointF (Size.Width / 2, Size.Height / 2);
fieldNode.Strength = 10.0f;
fieldNode.Falloff = 1.0f;
Bu, muzların alan hakkında radyal olarak çekildiği farklı bir kuvvet alanına neden olur: