Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
SpriteKit, kerangka kerja grafis 2D dari Apple, memiliki beberapa fitur baru yang menarik di iOS 8 dan OS X Yosemite. Ini termasuk integrasi dengan SceneKit, dukungan shader, pencahayaan, bayangan, batasan, pembuatan peta normal, dan peningkatan fisika. Secara khusus, fitur fisika baru membuatnya sangat mudah untuk menambahkan efek realistis pada permainan.
Tubuh Fisika
SpriteKit mencakup API fisika tubuh kaku 2D. Setiap sprite memiliki tubuh fisika terkait (SKPhysicsBody) yang mendefinisikan sifat fisika seperti massa dan gesekan, serta geometri tubuh di dunia fisika.
Membuat Tubuh Fisika dari Tekstur
SpriteKit sekarang mendukung turunan tubuh fisika sprite dari teksturnya. Ini membuatnya mudah untuk menerapkan tabrakan yang terlihat lebih alami.
Misalnya, perhatikan dalam tabrakan berikut bagaimana pisang dan monyet bertabrakan hampir di permukaan setiap gambar:
![]()
SpriteKit memungkinkan pembuatan tubuh fisika seperti itu dengan satu baris kode. Cukup panggil SKPhysicsBody.Create dengan tekstur dan ukuran: sprite. PhysicsBody = SKPhysicsBody.Create (sprite. Tekstur, sprite. Ukuran);
Ambang Batas Alfa
Selain hanya mengatur PhysicsBody properti langsung ke geometri yang berasal dari tekstur, aplikasi dapat mengatur dan ambang alfa untuk mengontrol bagaimana geometri diturunkan.
Ambang alfa mendefinisikan nilai alfa minimum piksel harus disertakan dalam isi fisika yang dihasilkan. Misalnya, kode berikut menghasilkan isi fisika yang sedikit berbeda:
sprite.PhysicsBody = SKPhysicsBody.Create (sprite.Texture, 0.7f, sprite.Size);
Efek mengubah ambang alfa seperti ini menyempurnakan tabrakan sebelumnya, sehingga monyet jatuh ketika bertabrakan dengan pisang:
![]()
Bidang Fisika
Tambahan bagus lainnya untuk SpriteKit adalah dukungan bidang fisika baru. Ini memungkinkan Anda untuk menambahkan hal-hal seperti bidang pusaran, bidang gravitasi radial, dan bidang musim semi untuk nama hanya beberapa.
Bidang fisika dibuat menggunakan kelas SKFieldNode, yang ditambahkan ke adegan seperti yang lain SKNode. Ada berbagai metode pabrik untuk SKFieldNode membuat bidang fisika yang berbeda. Anda dapat membuat bidang spring dengan memanggil SKFieldNode.CreateSpringField(), bidang gravitasi radial dengan memanggil SKFieldNode.CreateRadialGravityField(), dan sebagainya.
SKFieldNode juga memiliki properti untuk mengontrol atribut bidang seperti kekuatan bidang, wilayah bidang, dan redaman kekuatan bidang.
Bidang Spring
Misalnya, kode berikut membuat bidang spring dan menambahkannya ke adegan:
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);
Anda kemudian dapat menambahkan sprite dan mengatur propertinya PhysicsBody sehingga bidang fisika akan memengaruhi sprite, seperti yang dilakukan kode berikut saat pengguna menyentuh layar:
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);
}
Ini menyebabkan pisang berosilasi seperti musim semi di sekitar simpul lapangan:
![]()
Bidang Gravitasi Radial
Menambahkan bidang yang berbeda serupa. Misalnya, kode berikut membuat bidang gravitasi radial:
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;
Ini menghasilkan bidang gaya yang berbeda, di mana pisang ditarik secara radial tentang bidang :
![]()