Untitled
unknown
plain_text
10 months ago
2.4 kB
5
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.");
}
}
}
Editor is loading...
Leave a Comment