Имеется Raycast, т.к моделька из WoW, то стандартный Raycast через модель, идет прям с ног. Пришлось подшаманить, создать пустой объект под названием "Глаза" и пускать луч из него. Луч отлично идет из глаз на нужную мне дистанцию(дистанция агрессивности). Как только луч попадает на моего персонажа, то сразу начинает двигаться на моего персонажа, луч следит за персонажем и все отлично, НО. Когда моделька приближается, то ее начинать жестко кренить относительно персонажа и в итоге он смотрит сквозь персонажа и не видит его, хотя луч идет сквозь персонажа. Как данную проблему решить?
Есть ли аналог RayCast, т.е что бы не луч был, а обхватывала целую область вокруг противника(область агрессивности для него).
Сам код:
Код
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Enemy : MonoBehaviour { public int speed = 25; // Скорость передвижение enemy public float agr = 0.0f; // Radius агрессивности(для Physics.SphereCast) не работает public CharacterController _controller; // контроллер enemy private Transform target; // цель private Transform point; // начало Raycast идет от объекта глаза
// Use this for initialization void Start () { _controller = GetComponent<CharacterController>(); // берем контроллер
point = GameObject.Find("Glaza").transform;// находим объект Glaza }
// Update is called once per frame void Update () {
// луч от глаз по прямой Ray ray = new Ray(point.transform.position, transform.forward);
//Ray ray = new Ray(transform.position, transform.forward);
RaycastHit hit; // поподание Debug.DrawRay(ray.origin, ray.direction * 100, Color.blue); // рисуем длину if (Physics.Raycast(ray,out hit,150)) // получаем данные о поподание в объект { GameObject hitobject = hit.transform.gameObject; target = hitobject.transform; if (hitobject.tag==("Player")) // если объект игрок { //point.transform.LookAt(target); // поворачиваемся к объекту transform.rotation = Quaternion.LookRotation(hitobject.transform.position - point.transform.position, Vector3.up); // рисуем линию красным Debug.DrawLine(ray.origin, hit.point, Color.red);
Старый код в рпг стиле, работает все отлично, добавил свои плюху(как уклонение). Персонаж управляется через transofrm.position и при встречи гор он по ним ходит, как ниндзя, при встречи объектов проходит сквозь них. Дали совет, что бы персонаж не проходил через стены, использовать CC.MOVE(CharacterController.Move(Vector 3); Управление в старом виде, идет через Ray, Raycast получаем данные куда тыкнули кнопкой мыши и отправляем туда нашу модель, как только достигли таргета, модель останавливается. Вопрос, как это реализовать через CC.Move, т.к. p.s Попробовал я использовать Ray и при наведение курсором мыши на объект он удаляется, в итоге у меня удаляется террейн и не более :D привожу старый код:
Жанр игры: (RPG, Arena) На каком движке/конструкторе: Unity 3D В каком пространстве: 3D Какой вид в игре: RPG(Diablo, Devilian, Sacred) Какие есть похожие игры: Про Аналоги не знаю) Какой Язык Пр. используется в игре: C# Для какой платформы: PC Предоставление исходного кода игры: Все открыто) API: cry Какой тип лицензии распространения: Не комерческая Сроки разработки: начало разработки с конца марта. Состав имеющейся команды: 1 Программист, 1 дизайнер, 1 геймдизайнер, сценарист. Кто требуется в команду: 3D моделлеры окружения, 3D моделлеры персонажей, программисты, геймдизайнеры.
В Lineage 2 все окна, квестовые, диалоговые, работают через xml, открываются все в одинаковом графическом шаблоне. Как это можно реализовать в Unity? Мб кто уже делал? Заранее спасибо. DjanStudio
Решил проблему, с помощью MANMANA, Левша норм посоветовал, все в один класс объединил. Да тупанул, не сказал, что все скрипты на одном объекте.
Добавлено (18.09.2014, 18:09) --------------------------------------------- Собираюсь писать общий скрипт для передвижения персонажей. Резко встал вопрос, трансформ - он играет в noclip(cs.1.6) и летает через все и вся. Через RigBody - есть ли смысл? Или через Character Controller - но как писать через CC?
MANMANA, Ты уже в сотый раз помогаешь мне) Скинь в личку скайп или вк) спс
Добавлено (17.09.2014, 23:00) --------------------------------------------- Вот скрин, я во время игры изменяю Ловкость(Agility), скорость передвижения не сходит с 0. В чем беда, не помогли скрипты)
Требуется из класса Характеристика брать данные hastmove и переводить их в класс Муве.
Два кода: Код Передвижения:
Код
using UnityEngine; using System.Collections; public class Move : MonoBehaviour { public GameObject player; public int speedRotation = 4; public int speed = 3; public AnimationClip Walk; public AnimationClip Attack; public AnimationClip Stand; public AnimationClip Attack2; public int jumpSpeed = 50;
/* Скрипт Характеристики для игры Attack Demon. Разработчик - Jlovenpk1 */
using UnityEngine; using System.Collections;
public class Harakteristika : MonoBehaviour { public int agility; // Ловкость public int strenght; // Сила public int intellegent; // Интеллект public UILabel HP; // Инфа жизни public UILabel MP; // Инфа МП public int hastemove; // Скорость передвежиня
// Use this for initialization void Start () {
}
// Update is called once per frame void Update () {
HP.text = (strenght * 3).ToString(); /* Силу умножаем на 3. 1 Единица силы + 3 здоровья. (в будущем добавить Силу Атаки, 1 единица силы + 5 СА. Защиту +3*/ MP.text = (intellegent * 7).ToString (); /* Мозги умножаем на 7. 1 еденица мозгов +7 маны. Добавить Магическую Силу. + 2 МС за 1 единицу мозгов*/ hastemove = agility + 1; //Ловкость +1. 1 Единица ловкости +1 к скорости бега. В будущем +0,5 скорость атаки, 3 защиты.
Есть ли готовый скрипт для камеры, как в WoW или Lineage 2. т.к игра жанра рпг , курсор(если не нажата левая или правая кнопка мыши) должен свободно перемещаться и не затрагивать камеру(не управлять ей). Если зажата (правая или левая) кнопка мыши, то камерой можно управлять( осматриваться, приближать, отдалять). Заранее спасибо DjanStudio