Ответы пользователя по тегу C#
  • Как можно перенести данные из одного скрипта в другой?

    @mordamax1
    В скрипте Coins переменную coinsAmount нужно сделать публичной, если она таковой не является.
    В скрипте Player нужно создать переменную которая будет содержать данные coinsAmount (предположим что переменная называется coinsAmountPlayer) и в апдейте написать:
    coinsAmountPlayer = GameObject.Find("SomeObject").GetComponent().coinsAmount; //Вместо SomeObject, нужно прописать название объекта, к которому будет привязан скрипт.

    Возможно это фиговый способ в плане оптимизации, но результат должен быть
    Ответ написан
    Комментировать
  • Как сделать один прыжок на платформер Unity2D? При зажатии W он начинает летать, как ограничить до одного прыжка?

    @mordamax1
    Можно или сделать проверку "стоит ли он на земле", как это делают в туториалах, или просто сделать кулдаун

    Вот кулдаун:
    [SerializeField] private float speed;
    public float force;
    public Rigidbody2D rigidbody;
    public float timeCoolDown; //Время колдауна
    private bool heJumped = false; //Проверка "Прыгал ли игрок?"

    void Update()
    {
    if (Input.GetKey(KeyCode.A))
    {
    transform.Translate(Vector2.left * Time.deltaTime * speed);
    }
    if (Input.GetKey(KeyCode.D))
    {
    transform.Translate(Vector2.right * Time.deltaTime * speed);
    }
    if (Input.GetKey(KeyCode.W) && heJumped == false)
    {
    rigidbody.AddForce(Vector2.up * force, ForceMode2D.Impulse);
    StartCoroutine(CoolDown());
    }
    }

    IEnumerator CoolDown()
    {
    heJumped = true;
    yield return new WaitForSeconds(timeCoolDown);
    heJumped = false;
    }
    код не проверял, поэтому если будут ошибки - пиши

    Вот проверка земли:
    [SerializeField] private float speed;
    public float force;
    public Rigidbody2D rigidbody;
    public bool isGrounded; //Проверка "Стоит ли игрок на земле"

    void Update()
    {
    if (Input.GetKey(KeyCode.A))
    {
    transform.Translate(Vector2.left * Time.deltaTime * speed);
    }
    if (Input.GetKey(KeyCode.D))
    {
    transform.Translate(Vector2.right * Time.deltaTime * speed);
    }
    if (Input.GetKey(KeyCode.W) && isGrounded == true)
    {
    rigidbody.AddForce(Vector2.up * force, ForceMode2D.Impulse);
    }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
    if (collision.gameObject.CompareTag("Ground"))
    {
    isGrounded = true;
    }
    }
    private void OnCollisionExit2D(Collision2D collision)
    {
    if (collision.gameObject.CompareTag("Ground"))
    {
    isGrounded = false;
    }
    }
    Ответ написан
    Комментировать