Unity Topu Double Jump Zıplatma Kodu

Katılım
8 Şubat 2023
Mesajlar
167
Çözümler
1
Daha fazla  
Sistem Özellikleri
r7 9800x3d
rtx 5070 ti 16gb
2x32gb ram
asus tuf gaming b850-plus wifi
Cinsiyet
Erkek
Unity'de yaptığım oyuna bir top ekledim ve bu kodu ekledim:

Kod:
using UnityEngine;

public class OyuncuHareketi : MonoBehaviour

{

 public float hareketHizi = 5.0f;

 public float ziplamaGucu = 8.0f;

 public float yuvarlanmaGucu = 2.0f;

 public int maksimumZiplamaSayisi = 2;

 public Transform zeminKontrolNoktasi;

 public LayerMask zeminLayer;

 private Rigidbody2D rb;

 private bool zemindeMi;

 private int ziplamaSayisi;

 private float zeminCapi = 0.3f;

 private void Awake()

 {

 rb = GetComponent<Rigidbody2D>();

 }

 private void Update()

 {

 // Zıplama

 if (zemindeMi && Input.GetKeyDown(KeyCode.W))

 {

 rb.velocity = new Vector2(rb.velocity.x, ziplamaGucu);

 ziplamaSayisi = 1;

 }

 else if (ziplamaSayisi < maksimumZiplamaSayisi && Input.GetKeyDown(KeyCode.W))

 {

 rb.velocity = new Vector2(rb.velocity.x, ziplamaGucu);

 ziplamaSayisi++;

 }

 // Sol ve sağ hareket

 float yatayHareket = Input.GetAxis("Horizontal");

 rb.velocity = new Vector2(yatayHareket * hareketHizi, rb.velocity.y);

 // dönme

 if (yatayHareket < 0)

 {

 transform.localScale = new Vector3(-1, 1, 1);

 }

 else if (yatayHareket > 0)

 {

 transform.localScale = new Vector3(1, 1, 1);

 }

 if (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.D))

 {

 rb.drag = 0; // Sürtünmeyi sıfırla, böylece yuvarlanma etkisi oluşur

 }

 if (Input.GetKeyUp(KeyCode.A) || Input.GetKeyUp(KeyCode.D))

 {

 rb.drag = 3; // Sürtünmeyi geri yükle

 }

 }

 private void FixedUpdate()

 {

 // Zemin

 zemindeMi = Physics2D.OverlapCircle(zeminKontrolNoktasi.position, zeminCapi, zeminLayer);

 // Zeminde değilken zıplama sayısını sıfırla

 if (!zemindeMi)

 {

 ziplamaSayisi = 0;

 }

 }

}

Top hareket edebiliyor ve zıplayabiliyor ama sonsuz zıplayabiliyor. Ben sadece 2 defa zıplamasını ve yere tekrar değene kadar daha zıplayamamasını istiyorum yani double-jump gibi.
 
@Syntax Error yok hocam sorun olmaz sizi bu saate kadar uğraştırdığım için özür dilerim iyi akşamlar ve iyi geceler
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…