Помогите со скриптом атаки

Научился сам? Помоги начинающему.

Помогите со скриптом атаки

Сообщение T1m0the0S 09 дек 2013, 20:07

Доброго времени суток, уважаемые форумчане!

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

В сцене есть ГО скажем triggerSphere с тэгом SystemOnly, объект-пустышка на который накинут SphereCollider, стоит галочка на isTrigger.

Объект явл-ся дочерним игровому объекту с персонажем.

На triggerSphere накинут скрипт вот -

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class AttackObject : MonoBehaviour {
       
        public List<GameObject> targets;
//      public List<Transform> targets;
       
        void Start () {
                targets = new List<GameObject>();
//              targets = new List<Transform>();
        }

        void OnTriggerEnter(Collider other) {
                if (other.CompareTag("SystemOnly") || other.CompareTag("Player")) return;
                // добавляем объект в лист
                // targets.Add(other.gameObject);
                // не работает даже так.
                Debug.Log(this.name + ", " + "OnTriggerEnter: " + other.name);
        }
        void OnTriggerExit(Collider other) {
                if (other.CompareTag("SystemOnly") || other.CompareTag("Player")) return;
                // удаляем объект из листа
                // targets.Remove(other.gameObject);
                Debug.Log(this.name + ", " + "OnTriggerExit: " + other.name);
        }
        /**********ИЛИ**********
        void OnTriggerEnter(Collider other) {
                if (!other.CompareTag("Char") || !other.CompareTag("Doodad")) return;
                // добавляем объект в лист
                // targets.Add(other.gameObject);
                Debug.Log(this.name + ", " + "OnTriggerEnter: " + other.name);
        }
        void OnTriggerExit(Collider other) {
                if (!other.CompareTag("Char") || !other.CompareTag("Doodad")) return;
                // удаляем объект из листа
                // targets.Remove(other.gameObject);
                Debug.Log(this.name + ", " + "OnTriggerExit: " + other.name);
        }
        */

}
 


По идее при вхождении в триггер объекта с коллайдером, скрипт должен добавлять ссылку на объект в публичную переменную типа лист. Но он не работает. Для теста добавил куб с ригидбоди и бокс коллайдером - но куб не проходит проверку в OnTriggerEnter, хотя должен. В чем проблема не могу понять.

Вообще я использую такую систему, чтобы когда игрок подходит к объекту с тэгом Char или с тэгом Doodad, и объект в пределах радиуса сферы, этот объект добавляется в лист, далее проверка на угол между объектами и если объект перед игроком, то при клацаньи игроком левой кнопки мыши, у объекта вычитается часть здоровья, при здоровье = 0, удаление объекта из листа. Пытаюсь сделать геймплей наподобие принца персии WW.

Па-ма-ги-те! У меня уже стены ломаются от периодического тыкания в них головой. ;(

ЗЫ возможно ли что баг вызван неправильным использованием IEnumerator в других скриптах?
Если долго мучаться, что-нибудь получится )
Аватара пользователя
T1m0the0S
UNец
 
Сообщения: 23
Зарегистрирован: 07 дек 2013, 01:48

Re: Помогите со скриптом атаки

Сообщение Irondust 10 дек 2013, 04:06

Какой смысл объект для атаки делать дочерним объекту с игроком? И не проще рейкастом бить или вызывать Physics.OverlapSphere из точки атаки и проверять если кто в радиусе удара?
Irondust
UNец
 
Сообщения: 37
Зарегистрирован: 31 мар 2012, 06:23

Re: Помогите со скриптом атаки

Сообщение T1m0the0S 10 дек 2013, 09:25

Нет рейкастом не конорыч - по идее целей может быть несколько. А вот про оверлап сферу спс за идею, почитаю на досуге)
Если долго мучаться, что-нибудь получится )
Аватара пользователя
T1m0the0S
UNец
 
Сообщения: 23
Зарегистрирован: 07 дек 2013, 01:48


Вернуться в Уроки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3