Четверг, 18 Апреля 2024, 04:32

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » HP у противника (непонятная проблема)
HP у противника
GCSoftДата: Суббота, 08 Марта 2014, 22:36 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Доброго времени суток. Очень нужна помощь. Искал везде, но подобной проблемы не встречал. Делаю игру на Unity и когда бьешь одного отнимаются жизьки у всех. Как это исправить? Код противника ниже
Код

using UnityEngine;
using System.Collections;
public class Refresh : MonoBehaviour {
   // Use this for initialization
   public int hp=100;
   void Start ()   
   {

   }
   void Update ()   
    {
    if (hp > 0) {
     Ray ray = Camera.mainCamera.ScreenPointToRay(new Vector3(Screen.width/2,Screen.height/2,0));
     RaycastHit hit;
     if (Physics.Raycast (ray, out hit, 5f) && hit.collider.tag == "enemy")   
      {
      if (Input.GetMouseButtonUp(0)) this.hp=this.hp-50;
      }
      if ((Vector3.Distance (transform.position, Camera.main.transform.position) < 10) && (Vector3.Distance (transform.position, Camera.main.transform.position) > 2)) {
       animation.Play ("walk");
       Vector3 v;
       v.x = Camera.main.transform.position.x;
       v.y = 1;
       v.z = Camera.main.transform.position.z;
       transform.LookAt (v);
       v.x = 0;
       v.y = 0;
       v.z = 1;
       transform.Translate (v / 25);
       v.x = 0;
       v.y = 180;
       v.z = 0;
       transform.Rotate (v);
      } else if (Vector3.Distance (transform.position, Camera.main.transform.position) <= 2) {
       animation.Play ("attack");
      } else {
       animation.Play ("idle");
      }
    }else
     {
     if (hp>-1)||(hp<-1))
      {
      animation.Play("death");
      }
     hp=-1;
     }
    }
   }


Сообщение отредактировал GCSoft - Суббота, 08 Марта 2014, 22:38
shizofrenДата: Суббота, 08 Марта 2014, 22:52 | Сообщение # 2
Starting MS-DOS...
Сейчас нет на сайте
GCSoft, этот скрипт нужно вешать на каждого противника, а не один скрипт на сцену на пустом гейм обжекте.

Моя команда
GCSoftДата: Воскресенье, 09 Марта 2014, 06:37 | Сообщение # 3
почетный гость
Сейчас нет на сайте
shizofren, так то я знаю. я так и сделал
-l33t-h4xx-Дата: Воскресенье, 09 Марта 2014, 07:21 | Сообщение # 4
участник
Сейчас нет на сайте
Я в Unity не шарю, но осмелюсь предположить, что проблема здесь:
Код
if (Physics.Raycast (ray, out hit, 5f) && hit.collider.tag == "enemy")  

Именно - в этом условии:
Код
hit.collider.tag == "enemy"

Скрипт не делает разницы, попал ли луч в данный конкретный объект или в один из объектов с данным коллайдером, поэтому активируется при любом попадании вообще. Ты должен каким-то образом сузить область действия условия до одного объекта.


Как правильно задавать вопросы

Сообщение отредактировал -l33t-h4xx- - Воскресенье, 09 Марта 2014, 07:23
GCSoftДата: Воскресенье, 09 Марта 2014, 08:13 | Сообщение # 5
почетный гость
Сейчас нет на сайте
-l33t-h4xx-, она возвращает конкретный объект с тегом "enemy". Конкретный! А вот как сделать так, чтобы у этого конкретного объекта отнималась HP
MikeHozerДата: Воскресенье, 09 Марта 2014, 08:18 | Сообщение # 6
частый гость
Сейчас нет на сайте
Цитата GCSoft ()
она возвращает конкретный объект с тегом "enemy". Конкретный! А вот как сделать так, чтобы у этого конкретного объекта отнималась HP

используй переменные незнаю
GCSoftДата: Понедельник, 10 Марта 2014, 13:57 | Сообщение # 7
почетный гость
Сейчас нет на сайте
Я так и сделал. Внимательно смотрите код

Добавлено (09.03.2014, 08:25)
---------------------------------------------
все исправил))

Добавлено (09.03.2014, 08:26)
---------------------------------------------
Проблема была тут

Код
       
if (Input.GetMouseButtonUp(0)) if (hit.collider.transform.position==this.transform.position) this.hp=this.hp-50;  

Добавлено (10.03.2014, 13:57)
---------------------------------------------
Вот еще вопрос: как штатными средставми Юнити сделать так, чтобы при определенном кадре в анимации модели происходило какое-либо действие?

zaicev9797Дата: Понедельник, 10 Марта 2014, 21:35 | Сообщение # 8
AbRaKaDaBrA
Сейчас нет на сайте
вроде есть какая то пременная, которая хранит текущий номер кадра анимации, поищи wink

проект Mysterious Space. The losted moment
GCSoftДата: Вторник, 11 Марта 2014, 16:01 | Сообщение # 9
почетный гость
Сейчас нет на сайте
zaicev9797, там нет такой переменной, однако я сделал уже) Спасибо)

Добавлено (11.03.2014, 16:01)
---------------------------------------------
Вот вопрос: как покрасить программно объект в другой цвет?

allodsДата: Вторник, 11 Марта 2014, 16:50 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
renderer.material.color=Color.red;
к примеру
GCSoftДата: Вторник, 11 Марта 2014, 18:34 | Сообщение # 11
почетный гость
Сейчас нет на сайте
Да я уже нашел)
DantorSДата: Вторник, 11 Марта 2014, 18:49 | Сообщение # 12
заслуженный участник
Сейчас нет на сайте
Меня удивляют сообщения в этой теме GCSoft(автор темы) 3 раза написал что вопрос решен проблем больше нет а форумучане продолжают находить проблемы в коде
GCSoftДата: Среда, 12 Марта 2014, 04:27 | Сообщение # 13
почетный гость
Сейчас нет на сайте
DantorS, это же GCUP расслабься)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » HP у противника (непонятная проблема)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг