Загрузка данных


using UnityEngine;
using TMPro;

public class PlayerController : MonoBehaviour
{
    [SerializeField] float rotationSpeed = 50f;
    [SerializeField] float jumpForce = 8f;
    [SerializeField] float raycastDistance = 1f;
    [SerializeField] LayerMask groundLayer;
    [SerializeField] GameObject cubePrefab;
    [SerializeField] int step = 5;
    [SerializeField] int counter;

    Rigidbody2D rb;
    bool isGrounded;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        CheckGrounded();
        transform.Rotate(0, 0, rotationSpeed * Time.deltaTime);

        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            Jump();
            SpawnCube();
        }
    }

    void CheckGrounded()
    {
        RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.down, raycastDistance, groundLayer);
        isGrounded = hit.collider != null;
    }

    void Jump()
    {
        rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
    }

    void SpawnCube()
    {
        counter += step;

        GameObject cube = Instantiate(cubePrefab, transform.position + Vector3.up * 1.5f, Quaternion.identity);

        cube.GetComponent<SpriteRenderer>().color = Random.ColorHSV(0f, 1f, 0.7f, 1f, 0.8f, 1f);

        TextMeshPro txt = cube.GetComponentInChildren<TextMeshPro>();
        txt.text = counter.ToString();
        txt.color = Random.ColorHSV(0f, 1f, 0.7f, 1f, 0.8f, 1f);

        cube.AddComponent<CubeRotator>().speed = rotationSpeed;
    }
}