Я уже некоторое время пытаюсь решить эту проблему с помощью своего кода, но не могу в этом разобраться. По какой-то причине враги все еще могут появляться за пределами комнат, но они никогда не будут появляться за пределами комнат.
В комнатах, которые я создал до того, как написал этот скрипт, но те, которые я создал недавно, позволяют появляться снаружи. Я также попытался исправить это, создав второй скрипт, который я добавил к своим врагам, который вызывает метод повторного появления, если он не касается земли при первом появлении, но это тоже не сработало.
Код, показанный ниже, прикреплен к моему объекту игрока:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemySpawnRng : MonoBehaviour
{
public GameObject Enemy;
private DoorOpen dooropen;
public GameObject Enemy2;
public GameObject Enemy3;
public GameObject Enemy4;
public GameObject Enemy5;
private int ChosenEnemy;
public int SpawnY;
public int SpawnX;
public int EnemyAmount;
private EnemyAI enemyAI;
private Target target;
void Start()
{
target = FindObjectOfType();
target.EnemiesInRoom = 0;
dooropen = GetComponent();
EnemyAmount = Random.Range(4, 10);
target.EnemiesInRoom = EnemyAmount;
for (int i = 0; i < EnemyAmount; i++)
{
ChosenEnemy = Random.Range(1, 6);
if (ChosenEnemy == 1)
{
Enemy = Instantiate(Enemy, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy.transform.Translate(SpawnX, SpawnY, 0);
Enemy.transform.Translate(0, SpawnY, 0);
Enemy = GameObject.Find("Big Orc 1 (10)");
}
if (ChosenEnemy == 2)
{
Enemy2 = Instantiate(Enemy2, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy2.transform.Translate(SpawnX, SpawnY, 0);
Enemy.transform.Translate(0, SpawnY, 0);
Enemy2 = GameObject.Find("Spooky Scary Skeleton (16)");
}
if (ChosenEnemy == 3)
{
Enemy3 = Instantiate(Enemy3, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy3.transform.Translate(SpawnX, SpawnY, 0);
Enemy3.transform.Translate(0, SpawnY, 0);
Enemy3 = GameObject.Find("Green goo guy (8)");
}
if (ChosenEnemy == 4)
{
Enemy4 = Instantiate(Enemy4, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy4.transform.Translate(SpawnX, SpawnY, 0);
Enemy4.transform.Translate(0, SpawnY, 0);
Enemy4 = GameObject.Find("Little Orc (31)");
}
if (ChosenEnemy == 5)
{
Enemy5 = Instantiate(Enemy5, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy5.transform.Translate(SpawnX, SpawnY, 0);
Enemy5.transform.Translate(0, SpawnY, 0);
Enemy5 = GameObject.Find("Little Demon (12)");
}
}
}
public void RetrySpawn()
{
Debug.Log("SpawnRetried");
SpawnX = Random.Range(-10, 15);
SpawnY = Random.Range(-10, 1);
Enemy.transform.Translate(SpawnX, SpawnY, 0);
Enemy.transform.Translate(0, SpawnY, 0);
SpawnX = Random.Range(-10, 15);
SpawnY = Random.Range(-10, 1);
Enemy2.transform.Translate(SpawnX, SpawnY, 0);
Enemy2.transform.Translate(0, SpawnY, 0);
SpawnX = Random.Range(-10, 15);
SpawnY = Random.Range(-10, 1);
Enemy3.transform.Translate(SpawnX, SpawnY, 0);
Enemy3.transform.Translate(0, SpawnY, 0);
SpawnX = Random.Range(-10, 15);
SpawnY = Random.Range(-10, 1);
Enemy4.transform.Translate(SpawnX, SpawnY, 0);
Enemy4.transform.Translate(0, SpawnY, 0);
SpawnX = Random.Range(-10, 15);
SpawnY = Random.Range(-10, 1);
Enemy5.transform.Translate(SpawnX, SpawnY, 0);
Enemy5.transform.Translate(0, SpawnY, 0);
}
void OnTriggerEnter2D(Collider2D collision)
{
if (!collision.gameObject.CompareTag("Ground"))
{
Invoke("RetrySpawn", 0);
}
}
void SpawnEnemies()
{
EnemyAmount = Random.Range(7, 11);
target.EnemiesInRoom = EnemyAmount;
for (int i = 0; i < EnemyAmount; i++)
{
ChosenEnemy = Random.Range(1, 6);
if (ChosenEnemy == 1)
{
Enemy = Instantiate(Enemy, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy.transform.Translate(SpawnX, SpawnY, 0);
Enemy.transform.Translate(0, SpawnY, 0);
Enemy = GameObject.Find("Big Orc 1 (10)");
}
if (ChosenEnemy == 2)
{
Enemy2 = Instantiate(Enemy2, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy2.transform.Translate(SpawnX, SpawnY, 0);
Enemy.transform.Translate(0, SpawnY, 0);
Enemy2 = GameObject.Find("Spooky Scary Skeleton (16)");
}
if (ChosenEnemy == 3)
{
Enemy3 = Instantiate(Enemy3, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy3.transform.Translate(SpawnX, SpawnY, 0);
Enemy3.transform.Translate(0, SpawnY, 0);
Enemy3 = GameObject.Find("Green goo guy (8)");
}
if (ChosenEnemy == 4)
{
Enemy4 = Instantiate(Enemy4, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy4.transform.Translate(SpawnX, SpawnY, 0);
Enemy4.transform.Translate(0, SpawnY, 0);
Enemy4 = GameObject.Find("Little Orc (31)");
}
if (ChosenEnemy == 5)
{
Enemy5 = Instantiate(Enemy5, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy5.transform.Translate(SpawnX, SpawnY, 0);
Enemy5.transform.Translate(0, SpawnY, 0);
Enemy5 = GameObject.Find("Little Demon (12)");
}
}
}
The enemies spawn outside the room not on ground which I tagged as Ground and gave it a trigger collider. For some reason though some rooms I made before I wrote this script, the enemies do spawn inside the rooms 100% of the time, but in a room I just created with my tilemap, they spawn outside the room.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -the-rooms
Не могу понять, почему враги спавнятся за пределами комнат. ⇐ C#
Место общения программистов C#
-
Anonymous
1770898584
Anonymous
Я уже некоторое время пытаюсь решить эту проблему с помощью своего кода, но не могу в этом разобраться. По какой-то причине враги все еще могут появляться за пределами комнат, но они никогда не будут появляться за пределами комнат.
В комнатах, которые я создал до того, как написал этот скрипт, но те, которые я создал недавно, позволяют появляться снаружи. Я также попытался исправить это, создав второй скрипт, который я добавил к своим врагам, который вызывает метод повторного появления, если он не касается земли при первом появлении, но это тоже не сработало.
Код, показанный ниже, прикреплен к моему объекту игрока:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemySpawnRng : MonoBehaviour
{
public GameObject Enemy;
private DoorOpen dooropen;
public GameObject Enemy2;
public GameObject Enemy3;
public GameObject Enemy4;
public GameObject Enemy5;
private int ChosenEnemy;
public int SpawnY;
public int SpawnX;
public int EnemyAmount;
private EnemyAI enemyAI;
private Target target;
void Start()
{
target = FindObjectOfType();
target.EnemiesInRoom = 0;
dooropen = GetComponent();
EnemyAmount = Random.Range(4, 10);
target.EnemiesInRoom = EnemyAmount;
for (int i = 0; i < EnemyAmount; i++)
{
ChosenEnemy = Random.Range(1, 6);
if (ChosenEnemy == 1)
{
Enemy = Instantiate(Enemy, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy.transform.Translate(SpawnX, SpawnY, 0);
Enemy.transform.Translate(0, SpawnY, 0);
Enemy = GameObject.Find("Big Orc 1 (10)");
}
if (ChosenEnemy == 2)
{
Enemy2 = Instantiate(Enemy2, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy2.transform.Translate(SpawnX, SpawnY, 0);
Enemy.transform.Translate(0, SpawnY, 0);
Enemy2 = GameObject.Find("Spooky Scary Skeleton (16)");
}
if (ChosenEnemy == 3)
{
Enemy3 = Instantiate(Enemy3, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy3.transform.Translate(SpawnX, SpawnY, 0);
Enemy3.transform.Translate(0, SpawnY, 0);
Enemy3 = GameObject.Find("Green goo guy (8)");
}
if (ChosenEnemy == 4)
{
Enemy4 = Instantiate(Enemy4, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy4.transform.Translate(SpawnX, SpawnY, 0);
Enemy4.transform.Translate(0, SpawnY, 0);
Enemy4 = GameObject.Find("Little Orc (31)");
}
if (ChosenEnemy == 5)
{
Enemy5 = Instantiate(Enemy5, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy5.transform.Translate(SpawnX, SpawnY, 0);
Enemy5.transform.Translate(0, SpawnY, 0);
Enemy5 = GameObject.Find("Little Demon (12)");
}
}
}
public void RetrySpawn()
{
Debug.Log("SpawnRetried");
SpawnX = Random.Range(-10, 15);
SpawnY = Random.Range(-10, 1);
Enemy.transform.Translate(SpawnX, SpawnY, 0);
Enemy.transform.Translate(0, SpawnY, 0);
SpawnX = Random.Range(-10, 15);
SpawnY = Random.Range(-10, 1);
Enemy2.transform.Translate(SpawnX, SpawnY, 0);
Enemy2.transform.Translate(0, SpawnY, 0);
SpawnX = Random.Range(-10, 15);
SpawnY = Random.Range(-10, 1);
Enemy3.transform.Translate(SpawnX, SpawnY, 0);
Enemy3.transform.Translate(0, SpawnY, 0);
SpawnX = Random.Range(-10, 15);
SpawnY = Random.Range(-10, 1);
Enemy4.transform.Translate(SpawnX, SpawnY, 0);
Enemy4.transform.Translate(0, SpawnY, 0);
SpawnX = Random.Range(-10, 15);
SpawnY = Random.Range(-10, 1);
Enemy5.transform.Translate(SpawnX, SpawnY, 0);
Enemy5.transform.Translate(0, SpawnY, 0);
}
void OnTriggerEnter2D(Collider2D collision)
{
if (!collision.gameObject.CompareTag("Ground"))
{
Invoke("RetrySpawn", 0);
}
}
void SpawnEnemies()
{
EnemyAmount = Random.Range(7, 11);
target.EnemiesInRoom = EnemyAmount;
for (int i = 0; i < EnemyAmount; i++)
{
ChosenEnemy = Random.Range(1, 6);
if (ChosenEnemy == 1)
{
Enemy = Instantiate(Enemy, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy.transform.Translate(SpawnX, SpawnY, 0);
Enemy.transform.Translate(0, SpawnY, 0);
Enemy = GameObject.Find("Big Orc 1 (10)");
}
if (ChosenEnemy == 2)
{
Enemy2 = Instantiate(Enemy2, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy2.transform.Translate(SpawnX, SpawnY, 0);
Enemy.transform.Translate(0, SpawnY, 0);
Enemy2 = GameObject.Find("Spooky Scary Skeleton (16)");
}
if (ChosenEnemy == 3)
{
Enemy3 = Instantiate(Enemy3, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy3.transform.Translate(SpawnX, SpawnY, 0);
Enemy3.transform.Translate(0, SpawnY, 0);
Enemy3 = GameObject.Find("Green goo guy (8)");
}
if (ChosenEnemy == 4)
{
Enemy4 = Instantiate(Enemy4, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy4.transform.Translate(SpawnX, SpawnY, 0);
Enemy4.transform.Translate(0, SpawnY, 0);
Enemy4 = GameObject.Find("Little Orc (31)");
}
if (ChosenEnemy == 5)
{
Enemy5 = Instantiate(Enemy5, transform.position, Quaternion.identity);
SpawnX = Random.Range(-20, 21);
SpawnY = Random.Range(-10, 1);
Enemy5.transform.Translate(SpawnX, SpawnY, 0);
Enemy5.transform.Translate(0, SpawnY, 0);
Enemy5 = GameObject.Find("Little Demon (12)");
}
}
}
The enemies spawn outside the room not on ground which I tagged as Ground and gave it a trigger collider. For some reason though some rooms I made before I wrote this script, the enemies do spawn inside the rooms 100% of the time, but in a room I just created with my tilemap, they spawn outside the room.
Подробнее здесь: [url]https://stackoverflow.com/questions/79800373/i-cant-figure-out-why-the-enemies-are-spawning-outside-the-rooms[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия