Untitled

 avatar
unknown
plain_text
17 days ago
2.4 kB
2
Indexable
//ball 

using UnityEngine;
public class BallScript : MonoBehaviour
{
    [SerializeField] private ScoreManager scoreManager;
    private float horizontal;
    private float speed = 12f;
    private float jumpingPower = 50f;
    private float wallBounceForce = 100f;

    [SerializeField] private Rigidbody2D rb;
    [SerializeField] private Transform groundCheck;
    [SerializeField] private LayerMask groundLayer;
    [SerializeField] private LayerMask wallLayer;

    void Update()
    {
        horizontal = Input.GetAxisRaw("Horizontal");
        if (Input.GetButtonDown("Jump") && IsGrounded())
        {
            rb.linearVelocity = new Vector2(rb.linearVelocity.x, jumpingPower);
        }
    }

    private void FixedUpdate()
    {
        float horizontalForce = horizontal * speed;
        rb.AddForce(new Vector2(horizontalForce, 0), ForceMode2D.Force);
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Wall"))
        {
            Vector2 normal = collision.contacts[0].normal;
            Vector2 currentVelocity = rb.linearVelocity;
            float extraForce = Mathf.Sign(normal.x) * wallBounceForce;
            rb.linearVelocity = new Vector2(extraForce, currentVelocity.y);
            if (scoreManager != null)
            {
                scoreManager.IncreaseScore(1);
            }
            else
            {
                Debug.LogWarning("ScoreManager is not assigned to the Ball script!");
            }
        }
    }

    private bool IsGrounded()
    {
        ContactFilter2D filter = new ContactFilter2D();
        filter.SetLayerMask(groundLayer);
        Collider2D[] results = new Collider2D[1];
        return Physics2D.OverlapCircle(groundCheck.position, 3f, filter, results) > 0;
    }
}

//scoreManager

using UnityEngine;
using TMPro;

public class ScoreManager : MonoBehaviour
{
    private int score = 0;
    [SerializeField] private TMP_Text scoreText; // Assign in Inspector

    void Start()
    {
        UpdateScoreText();
    }

    public void IncreaseScore(int amount)
    {
        score += amount;
        UpdateScoreText();
    }

    void UpdateScoreText()
    {
        if (scoreText != null)
        {
            scoreText.text = "Score: " + score;
        }
        else
        {
            Debug.LogWarning("Score Text is not assigned in ScoreManager! Assign it in the Inspector.");
        }
    }
}
Leave a Comment