Как реализовать следующую механику?

У меня есть игра, в которой есть 2 стенки, монетка и игрок. Игрок будет всегда двигаться в сторону монеты, но если нажать на экран то движение поменяется на обратное. Как реализовать такую механику что если игрок касается монетки то она исчезает и спавнится в другом рандомном месте, при этом если игрок ее коснулся то она исчезает, и при этом на сцене была бы только одна монета?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;


public class player : MonoBehaviour
{
    public GameObject goal1; 
    public GameObject goal2; 

    bool check = false;
  

    // Update is called once per frame
    void Update()
    {
        if (check) transform.position = Vector3.MoveTowards(transform.position, goal1.transform.position, 3f * Time.deltaTime);
        if (!check) transform.position = Vector3.MoveTowards(transform.position, goal2.transform.position, 3f * Time.deltaTime);

        transform.rotation *= Quaternion.Euler(0f, 0f, 1f);
    }

    public void change()
    {
        check = !check;
    }

}

вот начальный код


Ответы (1 шт):

Автор решения: vitalik198

А что конкретно не получается реализовать? Для начала нужно в движке сделать префаб монеты, повесить на него элемент Collider2D с галочкой IsTrigger (игра 2д я так понял), потом повесить какой-нибудь такой скрипт

using UnityEngine;    
public class Example : MonoBehaviour
    {
        void OnCollisionEnter2D(Collision2D collision)
        {
            if (collision.gameObject.tag == "PLayer")
            {
                //Добавить очки

                //Убрать монету
                //Destroy(this)

                //Создать следующую монету
                //Instantiate(coin, рандомные координаты между двумя стенами)
            }
        }
    }
→ Ссылка