Тело:
Я работаю над 2D-игрой на Unity (Unity 2021.3), где у меня есть сценарий для создания 4–10 случайных врагов в комнате при запуске игры. Скрипт EnemySpawnRng случайным образом выбирает один из пяти типов врагов (например, «Большой орк», «Жуткий страшный скелет») и размещает их в случайных позициях. Появление работает нормально в методе Start и в нескольких других комнатах, но по какой-то причине в некоторых комнатах враги появляются за пределами комнаты. Приведенный ниже код прикреплен к моему объекту проигрывателя:
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 made this script the enemies do spawn inside the rooms 100% of the time but in a room i just made with my tilemap they spawn outside the room.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -the-rooms
Я не могу понять, почему этот скрипт позволяет врагам появляться за пределами комнат, а не на плитках земли. ⇐ C#
Место общения программистов C#
1761514190
Anonymous
[b]Тело[/b]:
Я работаю над 2D-игрой на Unity (Unity 2021.3), где у меня есть сценарий для создания 4–10 случайных врагов в комнате при запуске игры. Скрипт EnemySpawnRng случайным образом выбирает один из пяти типов врагов (например, «Большой орк», «Жуткий страшный скелет») и размещает их в случайных позициях. Появление работает нормально в методе Start и в нескольких других комнатах, но по какой-то причине в некоторых комнатах враги появляются за пределами комнаты. Приведенный ниже код прикреплен к моему объекту проигрывателя:
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 made this script the enemies do spawn inside the rooms 100% of the time but in a room i just made with my tilemap they spawn outside the room.
Подробнее здесь: [url]https://stackoverflow.com/questions/79800321/i-cant-figure-out-why-this-script-is-letting-the-enemies-spawn-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антехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия