benimisimyohgardaş
Decapat
- 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:
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.
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.