Çö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.
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

Technopat Haberler

Geri
Yukarı