Saya mencoba menentukan apakah pemutar tersebut di-ground atau tidak, dan menggunakan pemutar desktop, metode yang dijelaskan di bawah ini berfungsi dengan baik, tetapi ketika dikompilasi ke Android berperilaku agak aneh, saya tidak yakin apakah itu hanya tertunda atau apa, tapi bool pembaruannya jarang seperti yang seharusnya.
Kode yang digunakan untuk menentukan apakah pemain di-ground:
void OnTriggerEnter2D(Collider2D other) {
if (other.tag == "NormalGround") {
player.Grounded = true;
}
}
void OnTriggerExit2D(Collider2D other){
if (other.tag == "NormalGround") {
player.Grounded = false;
}
}
Di desktop ini berfungsi dengan baik, seperti yang didemonstrasikan di sini dengan menulis var yang di-ground ke kotak teks di Update():
https://www.youtube.com/watch?v=CV0h18dz1cg
Namun di Android, collidernya seolah-olah sedang tertinggal:
https://www.youtube.com/watch?v=c66uw2_NhrQ
Anda dapat melihat di akhir video bahwa var hanya berubah setelah saya membuat karakternya melompat... (teks palsu yang sebenarnya diperbarui setiap frame sehingga tidak diperbarui pada Jump()
Beginilah cara collider diatur:
Hirarki:
GO yang saya gunakan untuk groundcheck:
Cara menyiapkan platform/ground:
1: Pemicu yang digunakan untuk mendeteksi saat pemain di-ground (terlihat di inspektur)
2: Collider digunakan untuk menghentikan pemain jatuh melalui sprite (bukan di inspektur)
Kode Lompat():
public void Jump ()
{
if (!(PlayerDoubleJumped) && (Grounded) || ((!(Grounded) && (!PlayerJumped)))) {
rb.velocity = new Vector2 (rb.velocity.x, JumpForce);
animator.Play ("JumpCycle");
PlayerJumped = true;
} else if (!(Grounded) && (!(PlayerDoubleJumped)) && (PlayerJumped)) {
rb.velocity = new Vector2 (rb.velocity.x, DoubleJumpForce);
animator.Play ("JumpCycle");
PlayerDoubleJumped = true;
}
}
Inilah cara saya memindahkan pemain:
this.transform.rotation = Quaternion.Euler (new Vector3 (0, 0, 0));
rb.velocity = new Vector2 (RunningSpeed, rb.velocity.y);
Pengaturan Fisika2D (default):
Saya menggunakan Persatuan 5.5.0
Adakah yang tahu apa masalahnya di sini?