Çözüldü Unity 2D tuşlarla zıplamayı düzeltmek

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

treeeboy

Centipat
Katılım
18 Şubat 2023
Mesajlar
9
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Merhaba Unity'de telefon için bir platform oyunu yaptım. Fakat oyunda zıplama tuşuna bastığımda bazen yükseğe zıplıyor, bazen de çok az zıplıyor. Nasıl düzeltebilirim?
 
Son düzenleyen: Moderatör:
Çözüm
Space'e uzun basmayı deneyin. Belki Space'e basılı tutunca da zıplıyordur ve sorun bundan dolayıdır. Böyle bir durum olursa kod hatalı demek.
hayır zıplamıyor.
{
public int hız = 10;
private float yatayhareket;
public float zıplamahızı;
bool facingRight = true;
Animator playerAnimator;
public bool isGrounded = false;
public Transform groundCheckPosition;
public float groundCheckRadius;
public LayerMask groundCheckLayer;

Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
playerAnimator = GetComponent<Animator>();
}
void Update()
{
OnGroundCheck();
rb.velocity = new Vector2(yatayhareket * hız * Time.deltaTime, rb.velocity.y);

if (rb.velocity.x < 0 && facingRight)
{
FlipFace();
}
else if (rb.velocity.x > 0 && !facingRight)
{
FlipFace();
}
}

void FlipFace()
{
facingRight = !facingRight;
Vector3 tempLocalScale = transform.localScale;
tempLocalScale.x *= -1;
transform.localScale = tempLocalScale;
}

public void sol()
{
yatayhareket = -1;
playerAnimator.SetFloat("playerSpeed", Mathf.Abs(rb.velocity.x));
}
public void sağ()
{
yatayhareket = 1;
playerAnimator.SetFloat("playerSpeed", Mathf.Abs(rb.velocity.x));
}
public void dur()
{
yatayhareket = 0;
playerAnimator.SetFloat("playerSpeed", Mathf.Abs(rb.velocity.x));
}
public void zıpla()
{
if (isGrounded)
{
rb.velocity = new Vector2(rb.velocity.x, zıplamahızı * Time.deltaTime);
}
}
void OnGroundCheck()
{
isGrounded = Physics2D.OverlapCircle(groundCheckPosition.position, groundCheckRadius, groundCheckLayer);
}
}
kod burada yardımcı olabilirseniz sevinirim.
Space'e uzun basmayı deneyin. Belki Space'e basılı tutunca da zıplıyordur ve sorun bundan dolayıdır. Böyle bir durum olursa kod hatalı demek.
 
Space'e uzun basmayı deneyin. Belki Space'e basılı tutunca da zıplıyordur ve sorun bundan dolayıdır. Böyle bir durum olursa kod hatalı demek.
hayır zıplamıyor.
{
public int hız = 10;
private float yatayhareket;
public float zıplamahızı;
bool facingRight = true;
Animator playerAnimator;
public bool isGrounded = false;
public Transform groundCheckPosition;
public float groundCheckRadius;
public LayerMask groundCheckLayer;

Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
playerAnimator = GetComponent<Animator>();
}
void Update()
{
OnGroundCheck();
rb.velocity = new Vector2(yatayhareket * hız * Time.deltaTime, rb.velocity.y);

if (rb.velocity.x < 0 && facingRight)
{
FlipFace();
}
else if (rb.velocity.x > 0 && !facingRight)
{
FlipFace();
}
}

void FlipFace()
{
facingRight = !facingRight;
Vector3 tempLocalScale = transform.localScale;
tempLocalScale.x *= -1;
transform.localScale = tempLocalScale;
}

public void sol()
{
yatayhareket = -1;
playerAnimator.SetFloat("playerSpeed", Mathf.Abs(rb.velocity.x));
}
public void sağ()
{
yatayhareket = 1;
playerAnimator.SetFloat("playerSpeed", Mathf.Abs(rb.velocity.x));
}
public void dur()
{
yatayhareket = 0;
playerAnimator.SetFloat("playerSpeed", Mathf.Abs(rb.velocity.x));
}
public void zıpla()
{
if (isGrounded)
{
rb.velocity = new Vector2(rb.velocity.x, zıplamahızı * Time.deltaTime);
}
}
void OnGroundCheck()
{
isGrounded = Physics2D.OverlapCircle(groundCheckPosition.position, groundCheckRadius, groundCheckLayer);
}
}
kod burada yardımcı olabilirseniz sevinirim.
 
Çözüm
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…