Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 22.05.2022
Сообщений: 4
1

Не работает Триггер после того как я еще раз задаю движение врагу

31.07.2022, 12:11. Показов 327. Ответов 2

Author24 — интернет-сервис помощи студентам
Всем здрасте. Столкнулся со следующей проблемой, у меня есть 4 типа врагов, один из них должен перемещаться на определенные координаты, когда его координата z < 1, а далее он должен двигаться дальше куда и двигался, пока не упрется в стену, на которой висит Trigger, и при входе в этот триггер он должен уничтожится, но он просто проходит сквозь его (не взаимодействует с Триггером). Методом тыка и комментирования понял, что проблема в том, что когда я перемещаю врага, он останавливается (место указано в коде в комментариях). В этом состоянии он еще взаимодействует с Триггером, но, если снова задать движение, он перестает взаимодействовать с триггером. Что я делаю не так?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Enemy : MonoBehaviour
{
    private Rigidbody enemyRb;
    public float enemySpeed;
    void Start()
    {
        enemyRb = GetComponent<Rigidbody>();
        enemySpeed = 20f;
    }
    void FixedUpdate()
    {
        enemyRb.AddForce(Vector3.back * enemySpeed * Time.deltaTime, ForceMode.Impulse);
        // корректировка позиции врага по трем линиям
        if (gameObject.CompareTag("EnemyRight"))
        {
            gameObject.transform.position = new Vector3(-1.5f, gameObject.transform.position.y, gameObject.transform.position.z);
        }
        if (gameObject.CompareTag("EnemyUp"))
        {
            gameObject.transform.position = new Vector3(0, gameObject.transform.position.y, gameObject.transform.position.z);
        }
        if (gameObject.CompareTag("EnemyDown"))
        {
            gameObject.transform.position = new Vector3(0, gameObject.transform.position.y, gameObject.transform.position.z);
        }
        if (gameObject.CompareTag("EnemyLeft"))
        {
            gameObject.transform.position = new Vector3(1.5f, gameObject.transform.position.y, gameObject.transform.position.z);
        }
        //проверка нужного префаба
        if (gameObject.CompareTag("EnemyUp"))
        {
            if(gameObject.transform.position.z < 1)
            {
                //резкий перенос врага вперед
                gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, -2.4f);
                //дальше враг не двигается, хотя, по идее, должен двигаться дальше и, если дальше задать ему скорость так:
                //enemyRb.AddForce(Vector3.back * enemySpeed * Time.deltaTime, ForceMode.Impulse);
                //то при столкнивении со стеной, на которой стоит галочка IsTrigger, этот враг никак не реагирует
            }
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2022, 12:11
Ответы с готовыми решениями:

После того как задаю position:fixed, половину сайта не видно
После того как классу .fixed-nav задаю position:fixed для фиксации меню, половина сайта не...

Почему, когда задаю padding и margin отступ происходит у соседнего элемента, а не у того, которому задаю?
p.author{ font-size: 20px; font-weight: bold; float: left; border-bottom: 2px...

Пишу игру PAC-MAN не получается сделать движение врагу
Нужно сделать движение врагу с приоритетом на героя, и чтобы не мог проходить сквозь стены. Буду...

Как после выполнения алгоритма заставить его выполнить еще n-ое число раз
Доброго времени суток. Допустим есть простой алгорим в котором задается число рандомом, и далее...

2
2636 / 1564 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
31.07.2022, 12:31 2
Цитата Сообщение от Dan_2 Посмотреть сообщение
Что я делаю не так?
Сейчас у вас в коде так и написано, что если это враг "EnemyUp" и его позиция по Z меньше 1, то вы перемещаете его по Z ещё в меньшую сторону, то-есть аж на -2.4f.

В следующем кадре снова выполняется это же условие
C#
1
2
3
if (gameObject.CompareTag("EnemyUp"))
{
    if (gameObject.transform.position.z < 1)
и этот же враг снова перемещается на -2.4.
0
0 / 0 / 0
Регистрация: 22.05.2022
Сообщений: 4
31.07.2022, 22:13  [ТС] 3
Спасибо, такая глупая ошибка, что аж стыдно
0
31.07.2022, 22:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2022, 22:13
Помогаю со студенческими работами здесь

как сделать что бы после решения 1 примера пользевателю предлагало еще раз воспользоваться?
#include &lt;iostream&gt; using namespace std; void main() { int N = 1; int num1 = 0; int num2 =...

Как сделать, чтобы контейнер переместился, а после перемещения еще раз переместился?
У меня есть несколько li в position:absolut. Через пару секунд после загрузки страницы они...

Не работает SD карточка после того,как сделал её загрузочной
Всем привет! Недавно столкнулся с такой проблемой. В общем,на старом компьютере полетела винда,и...

Включаеться, но не работает компьютер после того, как я по нему стукнул.
В общем стукнул я ладошкой по системному корпусу (сверху) , компьютер начал перезагружаться и завис...

хард не работает после того, как я выдернул не тот провод
случилось вот что я выдернул не тот провод и он оказался от переносного харда теперь в &quot;моем...

Не работает видеокарта после того,как вставил её в другой комп
Дело было так,я собирал компьютер,собрал и потом проверяю , изображение с видеокарты не было, я...

После того как ввожу данные,у меня бесконечно раз просит ввести данные
После того как ввожу данные,у меня бесконечно раз просит ввести данные.Подскажите как решить данную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru