Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.06.2019
Сообщений: 4
1

У врага не отнимается здоровье от пули

21.06.2019, 14:44. Показов 626. Ответов 6
Метки нет (Все метки)

Здравствуйте, я двумя скриптами сделал урон для врага от пули

Это скрипт жизней врага
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Collections;
using UnityEngine.UI;
using UnityEngine;
 
public class EnemyHP : MonoBehaviour
 
{
    public float health;
    public float maxHealth;
    public Image healthBar;
 
    // Use this for initialization
    void Start()
    {
        health = maxHealth;
    }
 
    // Update is called once per frame
    void Update()
    {
        healthBar.fillAmount = health / maxHealth;
    }
}
А это скрипт, который я повесил на пулю

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class loseHP : MonoBehaviour
{
    public GameObject Enemy;
    public int HP;
 
    void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Enemy")
        {
            Enemy.GetComponent<EnemyHP>().health -= HP;
            Destroy(gameObject);
        }
    }
}
Но почему-то не работает. Очень прошу, помогите, подскажите, что не так
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2019, 14:44
Ответы с готовыми решениями:

Здоровье врага и урон от пули
Всееем привет. Имеется проблема, когда стреляешь в противника, он не получает урон, что я делаю не...

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

К переменным прибавляется/отнимается 0.00001
Всем привет. По каким-то неизвестным причинам к моим двум переменным (banani , bps) прибавляется...

Зачем отнимается '0' в строке n += (int)Math.Pow(s[i]-'0',i+1); ?
Вообщем решал простенькую задачку на кодварс,имел реализацию в голове но при проверке выходило...

6
2080 / 1332 / 770
Регистрация: 26.10.2018
Сообщений: 3,855
21.06.2019, 14:54 2
Пуля уничтожается при столкновении? Проверь правильно ли теги расставил, поставлена ли галочка триггера на коллайдере врага, есть на пуле коллайдер, а также rigidbody.
0
0 / 0 / 0
Регистрация: 21.06.2019
Сообщений: 4
21.06.2019, 15:37  [ТС] 3
Проверил, и на пуле, и на враге триггер помечен, ригид на пули есть, и с тегами все в порядке( Скажите, может что-то в настройках rigidbody нужно изменить? Я уже не знаю что не так.

Я еще анимацию смерти добавил врагу, думал поможет(

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
void Update()
    {
        healthBar.fillAmount = health / maxHealth;
        if (health > maxHealth)
        {
            health = 100;
        }
        if (health < 0)
        {
            GetComponent<Animation>().CrossFade(Death.name);
        }
    }
}
Добавлено через 2 минуты
И пуля, кстати исчезает, и жизни в минус уходят, но ничего не происходит

Добавлено через 6 минут
Цитата Сообщение от 1max1 Посмотреть сообщение
Пуля уничтожается при столкновении? Проверь правильно ли теги расставил, поставлена ли галочка триггера на коллайдере врага, есть на пуле коллайдер, а также rigidbody.
Все вроде в порядке, но жизни в минус уходят, а ничего не происходит
0
2080 / 1332 / 770
Регистрация: 26.10.2018
Сообщений: 3,855
21.06.2019, 15:49 4
Цитата Сообщение от dmitvf Посмотреть сообщение
Все вроде в порядке, но жизни в минус уходят, а ничего не происходит
Проверь работает ли анимация в принципе, в старте напиши запуск анимации без лишнего другого кода.
0
0 / 0 / 0
Регистрация: 21.06.2019
Сообщений: 4
21.06.2019, 16:49  [ТС] 5
Цитата Сообщение от 1max1 Посмотреть сообщение
Проверь работает ли анимация в принципе, в старте напиши запуск анимации без лишнего другого кода.
Эту проблему решил, спасибо) Но появился вопрос, не подскажите, как сделать, чтобы анимация смерти врага была однократная, и чтобы он после анимации смерти исчез?

Вот код
Извините, если вопрос глупый)

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
using System.Collections;
using UnityEngine.UI;
using UnityEngine;
 
public class Enemy : MonoBehaviour
{
    public float seeDistance = 30.5f;
    public float attackDistance = 5.0f;
    private UnityEngine.AI.NavMeshAgent nav;
    public Transform target;
    public Animation anim;
    public AnimationClip a_Idle;
    public float a_IdleSpeed = 1;
    public AnimationClip a_Walk;
    public float a_WalkSpeed = 2;
    public AnimationClip a_Attack;
    public float a_AttackSpeed = 2;
    private bool walk;
    private bool Attacka;
    public int Damage;
 
    public float health;
    public float maxHealth;
    public AnimationClip Death;
    public Image healthBar;
 
    void Start()
    {
        GetComponent<Animation>()[a_Idle.name].speed = a_IdleSpeed;
        GetComponent<Animation>()[a_Attack.name].speed = a_AttackSpeed;
        GetComponent<Animation>()[a_Walk.name].speed = a_WalkSpeed;
        GetComponent<Animation>().CrossFade(a_Idle.name);
 
        nav = GetComponent<UnityEngine.AI.NavMeshAgent>();
 
        health = maxHealth;
    }
 
    void IdleState()
    {
        nav.enabled = false;
        GetComponent<Animation>().CrossFade(a_Idle.name);
    }
 
    void Update()
    {
        if (anim[a_Attack.name].enabled == false)
        {
            Attacka = true;
        }
 
        if (Vector3.Distance(transform.position, target.transform.position) <= seeDistance)
        {
            if (anim[a_Attack.name].time > 0.9 * anim[a_Attack.name].length & target.tag == "Player")
            {
                target.GetComponent<PlayerHP>().health -= Damage;
            }
        }
 
        if (target == null)
        {
            IdleState();
        }
 
        if (Vector3.Distance(transform.position, target.transform.position) <= seeDistance & Attacka == true)
        {
            if (Vector3.Distance(transform.position, target.transform.position) > attackDistance & anim[a_Attack.name].enabled == false)
            {
                GetComponent<Animation>().CrossFade(a_Walk.name);
                walk = true;
                nav.enabled = true;
                nav.SetDestination(target.position);
            }
            else
            {
                if (target.tag == "Player")
                {
                    nav.enabled = false;
                    GetComponent<Animation>().CrossFade(a_Attack.name);
                    walk = false;
                    Vector3 lookAtPosition = target.position;
                    lookAtPosition.y = transform.position.y;
                    transform.LookAt(lookAtPosition);
                }
            }
        }
        else
        {
            GetComponent<Animation>().CrossFade(a_Idle.name);
            walk = false;
            nav.enabled = false;
        }
 
        healthBar.fillAmount = health / maxHealth;
        if (health > maxHealth)
        {
            health = 100;
        }
        if (health < 0)
        {
            GetComponent<Animation>().CrossFade(Death.name);
 
        }
    }
}
0
2080 / 1332 / 770
Регистрация: 26.10.2018
Сообщений: 3,855
21.06.2019, 17:16 6
C#
1
2
3
4
5
if (health < 0)
{
    GetComponent<Animation>().CrossFade(Death.name);
    Destroy(gameObject, Death.length);
}
1
0 / 0 / 0
Регистрация: 21.06.2019
Сообщений: 4
21.06.2019, 18:11  [ТС] 7
Цитата Сообщение от 1max1 Посмотреть сообщение
C#
Выделить код
1
2
3
4
5
if (health < 0)
{
GetComponent<Animation>().CrossFade(Death.name);
Destroy(gameObject, Death.length);
}
Спасибо большое!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2019, 18:11

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

ИИ Врага и Анимация
Доброго времени суток. Возник такой вопрос: Вообщем к примеру есть 2д игра в юнити, вид сверху,...

ИИ для врага
Всем привет! У меня сложный вопрос. И так, есть враг(куб) который находится в открытом мире. Может...

Движение врага
В общем, нужно, чтобы &quot;враг&quot; двигался от края платформы к краю. using UnityEngine; using...

Добавление врага
uses GraphABC, ABCObjects; var x,y: integer; Player: CircleABC; procedure keydown(key:...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.