@Yeess

Почему Не работает код на респавн еды?

Написал код чтобы когда змея приближалась к food(яблоку) она типа его съедала и заново появлялась
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;

public class SnakeFOOd : MonoBehaviour
{
    [SerializeField] BoxCollider2D SpawnArea;

    private void Start()
    {
        Randomposition();
    }

    private void Randomposition()
    {
        Bounds bounds = this.SpawnArea.bounds;

        float x = Random.Range(bounds.min.x, bounds.max.x);
        float y = Random.Range(bounds.min.y, bounds.max.y);

        this.transform.position = new Vector3(Mathf.Round(x), Mathf.Round(y), 10f);
    }

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "snake")
        {
            Randomposition();
        }
    }
}
  • Вопрос задан
  • 242 просмотра
Пригласить эксперта
Ответы на вопрос 1
@DrRen7
[SerializeField] BoxCollider2D SpawnArea;
  private void Randomposition()
  {
      Bounds bounds = SpawnArea.bounds;
      float x =SpawnArea.transform.position.x+ Random.Range(bounds.min.x, bounds.max.x);
      float y = SpawnArea.transform.position.y+Random.Range(bounds.min.y, bounds.max.y); 
      //перед изменением надо проверить на наличие змейки в точке
      // не уверен что сработает , без должно тож работать
      Vector3 newpos=  new Vector3(Mathf.Round(x) + 0.5f, Mathf.Round(y) + 0.5f, -1f); //0.5 из за того что объект равен 1,1
      if (IsGetSnake(newpos))
      {
          Randomposition();
          return;
      }
      transform.position = newpos; 
  }

  bool IsGetSnake(Vector3 pos)
  {
      bool shake = false;
      if (Physics.Raycast(pos + Vector3.forward, -Vector3.forward, out RaycastHit hit)) 
      {
          if (hit.transform.tag == "snake")
          {
              shake = true;
          }
      }
      return shake;
  }

  private void Start()
  {
      Randomposition();
  }
  private void OnTriggerEnter2D(Collider2D other)
  {
      if (other.tag == "snake")
      {
          Randomposition();
      }
  }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы