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
Сейчас нет на сайте
| вроде есть какая то пременная, которая хранит текущий номер кадра анимации, поищи
проект 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 расслабься)
|
|
| |