Bagaimana cara membuat tali?

8

Saya ingin membuat kembali game ini , tetapi saya tidak tahu cara membuat tali, atau pengaruhnya pada bola.

masukkan deskripsi gambar di sini

Pada dasarnya, ada tali, "terpasang", di satu ujung, ke penunjuk mouse, dan di ujung lainnya melekat pada bola besar. Saat pengguna menggerakkan mouse mereka, tali dan bola mengikuti, seolah mengayunkan cambuk atau semacamnya di kehidupan nyata.

Bagaimana cara saya membuat tali seperti pada permainan di atas?

Saya perlu tahu konsep dasar dan fisika di balik penciptaan tali semacam itu, bukan bagaimana menggunakan perpustakaan yang sudah ada untuk membuat tali. Saya ingin dapat menerapkan tali dari awal, jadi perlu tahu bagaimana itu bisa dilakukan.

Terima kasih!

theonlygusti
sumber

Jawaban:

3

Tali pada contoh Anda mungkin hanya gabungan fisika sederhana yang membatasi jarak bola ke kursor mouse. Sambungan ini biasanya disebut "Sambungan tali" atau "Sambungan pegas".

Sepertinya riak dalam string tidak didasarkan pada simulasi fisika yang sebenarnya. Kemungkinan besar ini adalah kurva bezier di mana titik kontrol terdorong lebih jauh dari poros tengah ketika bola lebih dekat ke posisi mouse.

Sementara jawaban yang diterima menjelaskan cara membuat tali realistis dalam mesin fisika, kadang-kadang lebih disukai untuk memiliki solusi yang jauh lebih sederhana (seperti diuraikan di atas). Solusi yang lebih sederhana (hanya dengan satu sambungan) sangat meningkatkan stabilitas simulasi. Beberapa sambungan yang terhubung yang memiliki kekuatan besar yang diaplikasikan cenderung gelisah dan dapat mengakibatkan rantai sambungan yang rusak dan tidak menentu.

Tentu saja Anda juga dapat menggabungkan kedua metode tersebut, dengan membuat tali Anda sebagai berikut:

  1. Rantai simpul, dihubungkan oleh sambungan
  2. Sambungan tali / pegas dari simpul pertama ke simpul terakhir rantai yang memastikan bahwa Anda tidak dapat menarik rantai lebih jauh dari jarak maksimum yang diberikan (salah satu alasan utama rantai ini menjadi tidak stabil).

Ini akan menghasilkan rantai yang bergerak lebih realistis (yang bahkan dapat bereaksi terhadap benda-benda lain dalam mesin fisika) tetapi akan membutuhkan lebih banyak kekuatan pemrosesan daripada hanya pegas bersama dengan perilaku rantai "palsu".

bummzack
sumber
Terima kasih telah menunjukkan itu! Bagaimana titik kontrol bezier akan dimanipulasi, karena contohnya memang terlihat sangat realistis, tidak hanya seperti bezier di mana ia diluruskan dan "tergencet".
theonlygusti
Saya tidak berpikir itu terlihat sangat realistis sama sekali. Itu hanya menambahkan beberapa riak ke tali, itu tidak bengkok atau apa pun ... bagi saya sepertinya hanya diluruskan dan tergencet.
bummzack
Tetapi saya perhatikan bahwa kurva dapat berbeda sudut satu sama lain; bagaimana ini bisa dicapai?
theonlygusti
Tambahkan beberapa offset acak agar terlihat berbeda setiap saat?
bummzack
Oke ya; sepertinya memang seperti itu yang dilakukan dalam permainan, tetapi sebenarnya (dan ini akan tampak aneh bagi semua orang) bahasa pemrograman yang saya gunakan membuatnya lebih mudah untuk membuat mesin fisika seperti yang ditunjukkan jawaban Kyranstar daripada menggambar kurva bezier.
theonlygusti
10

Pada dasarnya, Anda harus membuat mesin fisika. Tali secara konsep adalah sekelompok "simpul" yang dihubungkan bersama dengan pegas.

Pada dasarnya, setiap tick, setiap node akan mengerahkan kekuatan pada node di atas dan di bawahnya sebanding dengan jarak mereka terpisah (atau seberapa jauh dari panjang peregangan nyaman mereka). Jika Anda ingin memasang bola, sambungkan saja dengan sambungan pegas ke simpul bawah tali.

Ini adalah tutorial yang bagus untuk membuat mesin fisika, tetapi itu tidak benar-benar masuk ke kendala atau sendi.

Berikut adalah tutorial yang mencakup pegas dasar, yang seharusnya menjadi semua yang Anda butuhkan untuk tali seperti itu.

Ini adalah tali yang dibuat di mesin fisika (sangat dasar) saya . Ini jelas memiliki beberapa kebiasaan (getaran aneh) tetapi umumnya apa yang Anda cari. Saat Anda menggambar talinya, jangan menggambar simpulnya.

Edit:

Untuk membuat tali yang terlihat bagus, "sambungan benang" sebenarnya jauh lebih bagus dan lebih dekat dengan contoh Anda. Sambungan tali pada dasarnya adalah pegas, tetapi itu hanya mengoreksi objek ketika mereka terlalu jauh (bukan ketika mereka terlalu dekat).

Ini adalah tali saya dengan sambungan benang sebagai gantinya: masukkan deskripsi gambar di sini

Kyranstar
sumber
"Saat kamu menggambar talinya, jangan menggambar simpulnya." - Membuatku tertawa :) Terima kasih telah mempertimbangkan noob-ishness ekstremku. Apakah bola hanya akan menjadi simpul lain saja? Dari massa yang lebih besar? (Apakah setiap node memiliki massa?)
theonlygusti
Ya mereka melakukanya! Secara umum cara terbaik untuk menghitung massa secara intuitif adalah dengan memberikan kepadatan pada setiap bola, dan hanya mengalikannya dengan luasnya. Anda selalu dapat mengubah ini untuk mendapatkan hasil yang lebih baik di gim Anda yang sebenarnya.
Kyranstar
Biasanya, saya akan menerapkan ini dalam bahasa berorientasi objek, dengan kelas untuk sebuah simpul, dengan kepadatan properti, massa dll, tapi saya terpaksa menggunakan bahasa di mana OOP hampir tidak mungkin; bagaimana Anda mengatur node, dll., di bawah kendala ini?
theonlygusti
Sejujurnya, saya memiliki sedikit pengalaman dengan bahasa non-OOP. Anda dapat melihat Chipmunk2D , yang merupakan mesin fisika yang ditulis dalam C. Jelas, Anda akan memerlukan beberapa cara untuk menyimpan data ini dalam unit yang kohesif.
Kyranstar
Oke terima kasih; pertanyaan terakhir, apakah simpul abu-abu adalah simpul dalam arti yang lain? Apa yang istimewa tentang itu untuk membuatnya diam?
theonlygusti