Суббота, 27 Апреля 2024, 20:58

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Пак нубских вопросов юнити 3.х
Пак нубских вопросов юнити 3.х
AGENTX001Дата: Пятница, 29 Июля 2011, 18:23 | Сообщение # 1
почётный гцупер
Сейчас нет на сайте
Всем привет, занялся изучением этого прекрасного движка, возникли вопросы, надеюсь получить ответ.
Желательно C# или JS.
1) Как определить расстояние до объекта
2) Как узнать, свободно ли пространство в определённой точке (r_x,r_y)
3) Как заставить объект двигаться к заданной точке, при этом оббегая препятствия
QWER56Дата: Пятница, 29 Июля 2011, 18:54 | Сообщение # 2
старожил
Сейчас нет на сайте
Я так понимаю 1 и 2 вопрос вытекают из 3. Нужно сделать, что бы бот обходил препятствия? Или ты хочешь сделать автопуть, как в некоторых РПГ, когда ваш персонаж движется куда то далеко на автомате и обегает объекты?

Если первое, то лучше сделать, что бы бот двигался уже по запланированным маршрутам. А если всё таки второе, то ты стандартный "чарт контроллер" используешь?

Я пример сейчас не могу написать, с мобилы сижу, если сегодня буду дома, сделаю демку тебе. smile


ConsMark - поисковик по интернет магазинам.
seamanДата: Пятница, 29 Июля 2011, 19:01 | Сообщение # 3
старожил
Сейчас нет на сайте
1. distance = (otherGameObject.transform.position - transform.position).magnitude
2. Зачем? обычно делается не так. Обычно получаем сообщение при столкновении с другим объектом. И тогда просто туда не идем.
3. Задача не простая. Изучай: [url=http://www.google.ru/#hl=ru&cp=11&gs_id=3&xhr=t&q=Pathfinding&pf=p&sclient=psy&newwindow=1&safe=off&site=&source=hp&pbx=1&oq=Pathfinding&aq=0&aqi=g5&aql=&gs_sm=&gs_upl=&bav=on.2,or.r_gc.r_pw.&fp=1745bf77a1d710ff&biw=1280&bih=890]Pathfinding[/url].
AGENTX001Дата: Пятница, 29 Июля 2011, 19:39 | Сообщение # 4
почётный гцупер
Сейчас нет на сайте
Я пытаюсь сделать ээ бота. Он выбирает рандомную точку на расстоянии 10 м. и если в этой точке пусто, идёт к ней. Кроме того надо, шоб бот умел смотреть, нет ли в этой точке терраина, по скалом он не долже лазать...
seaman, спс.
QWER56Дата: Пятница, 29 Июля 2011, 19:58 | Сообщение # 5
старожил
Сейчас нет на сайте
AGENTX001, я бы сделал так. Делаешь на этой территории некое количество точек-поинтов. И бот может ходить только от одной точки к другой, к соседней, а к какой именно он выбирает random(). И ты учитываешь при раставлении поинтов, что бы между ними не было объектов. Так проще в реализации и понятней.

Или просто сделай несколько путей и он рандомом выберет путь.
А если делать, что бы он именно обходил объекты, то тут нужно расстояние коллизии увеличить и с обхождением помудиться.


ConsMark - поисковик по интернет магазинам.
AGENTX001Дата: Пятница, 29 Июля 2011, 20:24 | Сообщение # 6
почётный гцупер
Сейчас нет на сайте
QWER56, о. А как это делать? Прости за нубство... Какие функции перемещения есть? Как проверить коллизию? (шоб бот если вдруг с чемнить столкнулся, к другому поинту бежал...)
seamanДата: Пятница, 29 Июля 2011, 20:35 | Сообщение # 7
старожил
Сейчас нет на сайте
Извините, а может Вы все же сначала прочитаете уроки, а уж потом будете пытаться pathfinding разрабатывать? Если Вы не знаете вообще ничего - может начать с начала?
http://unity3d.ru/distribution/viewtopic.php?f=11&t=656
http://unity3d.ru/distribution/viewtopic.php?f=11&t=753
http://unity3d.ru/distribution/viewtopic.php?f=11&t=430 или то же, но лучше перевод:
http://www.4shared.com/get/vxt1geM9/FPS_Tutorial_Translate.html
http://ogasoda.ru/talking/viewforum.php?f=113
http://unity3d.ru/distribution/viewtopic.php?f=11&t=5048
http://unity3d.ru/distribution/viewtopic.php?f=11&t=4992
AGENTX001Дата: Пятница, 29 Июля 2011, 20:55 | Сообщение # 8
почётный гцупер
Сейчас нет на сайте
seaman, предпочитаю всему учиться самостоятельно, попутн заглядывая в уроки. Неужели тяжело ответить на вопрос
Quote (AGENTX001)
Какие функции перемещения есть? Как проверить коллизию?
seamanДата: Пятница, 29 Июля 2011, 21:50 | Сообщение # 9
старожил
Сейчас нет на сайте
Представь себе сотни три нубов, задающих по сотне одинаковых вопросов.
А ведь все написано в уроках и справке.
Если Вы упорствуете в нежелании учиться - Ваше дело - разбирайтесь сами.
HacKeRДата: Пятница, 29 Июля 2011, 22:08 | Сообщение # 10
Злой Ангел
Сейчас нет на сайте
Сделал бы так:
На карте расбросаны точки "Pathnode" и бот выбирает рандомно эти точки на растоянии 10 метров. От бота пустить рейкасты во все 4 стороны на 1-2 метра. Если рейкасты видят колизию задаём опять рандом. Вот и всё логика


Жизнь это игра - хреново задумана но графика обалденная.....
Программирую на С++

Мой личный Мой новый блог (создан 22.08.2011)
ЛевшаДата: Суббота, 30 Июля 2011, 11:54 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
Quote (AGENTX001)
Неужели тяжело ответить на вопрос

seaman, прав, твой вопрос на толстую книжку тянет...
Предлагаешь нам тебе сюда весь мануал переписать? Марш в Scripting Reference


X.cor.R (Prologue)
pixeyeДата: Суббота, 30 Июля 2011, 14:39 | Сообщение # 12
Red Winter Software
Сейчас нет на сайте
Quote (AGENTX001)
seaman, предпочитаю всему учиться самостоятельно, попутн заглядывая в уроки. Неужели тяжело ответить на вопрос


Ну как то вопрос и предпочтение учиться самостоятельно в данном контексте не вяжутся;-) более того попутно заглядывая в уроки, ты наверно бы сам уже ответил на свои вопросы?
Апять таки - не вижу чтобы ты над этой проблемой работал. Где твой не рабочий код? Мало сказать что ты нуб, помогите. Ты просишь не помочь, а готове решение, а его вряд ли кто тебе даст.

Если ты раньше сидел на GameMaker, то могу лишь сказать одно - многих функций которые есть там в unity нет и придется пилить ручками. Поэтому подсказка какая нужна волшебная комбинация знаков и букв не пройдет.

ТУТ - все о коллизиях

Quote (AGENTX001)
Как определить расстояние до объекта

Масса способов и нюансов.

Самый простой вариант что то типо этого

Code

//C#
Transform target;
target = GameObject.Find("player").transform;
float distance = Vector3.Distance (transform.position, target.position);



ACTORS - мой фреймворк на Unity
Until We Die - игра над которой работаю

AGENTX001Дата: Суббота, 30 Июля 2011, 23:22 | Сообщение # 13
почётный гцупер
Сейчас нет на сайте
хех, попытался нацарапать, кто скажет, почему не пашет?
Code
using UnityEngine;
using System.Collections;

public class Bot : MonoBehaviour {

  // Use this for initialization
  void Start () {
    
   distance = (objPoint1.transform.position - transform.position);
if (distance > 1 ) {
gameObject.transform.position (objPoint.transform.position .x, objPoint.transform.position .y,objPoint.transform.position .z);
}
   
  }
   
  // Update is called once per frame
  void Update () {
   
  }
}
zodiakДата: Воскресенье, 31 Июля 2011, 00:08 | Сообщение # 14
постоянный участник
Сейчас нет на сайте
Ты бы книжечку по шарпу почитал бы и не писал подобного.
Вон выше пример правильного определения дистанции, а ты че написал?

Code
public class Bot : MonoBehaviour {  

   // Use this for initialization  
   void Start () {  
      
    float distance = Vector3.Distance(objPoint1.transform.position, transform.position);  
  if (distance > 1 ) {  
  gameObject.transform.position = new Vector3(objPoint.transform.position .x, objPoint.transform.position .y,objPoint.transform.position .z);  
  }

Кстати ты в курсе, что Start выполняется всего один раз при инициализации скрипта?

Вообще это не нубские, это тупые вопросы лентяя не желающего самому хоть немного пошевелить извилинами.


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
AGENTX001Дата: Воскресенье, 31 Июля 2011, 00:20 | Сообщение # 15
почётный гцупер
Сейчас нет на сайте
Quote (zodiak)
Вообще это не нубские, это тупые вопросы лентяя не желающего самому хоть немного пошевелить извилинами.

нет, это вопросы человека, который 3 день как поставил юнити, и пытается сделат что-то самостоятельно. И кончайте уже задалбывать, типо иди читай уроки, их я читал, делал, но мне хочется разобраться самому!!
zodiak, твой код не пашет...
Работает этот:
void Update () {

Vector3.Distance = (objPoint.transform.position - transform.position);

if (distance > 1 ) {

gameObject.transform.position (objPoint.transform.position .x, objPoint.transform.position .y,objPoint.transform.position .z);

}

}

}
zodiakДата: Воскресенье, 31 Июля 2011, 00:37 | Сообщение # 16
постоянный участник
Сейчас нет на сайте
Quote (AGENTX001)
Работает этот:

Да. Чудо.
Как ты смог присвоить вектор методу Distance и использовать не объявленную переменную distance?
Повторяю, возьми книжечку по шарпу и почитай разберись какую дурь ты тут пишешь.

Quote (AGENTX001)
но мне хочется разобраться самому!!

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


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
AGENTX001Дата: Воскресенье, 31 Июля 2011, 12:14 | Сообщение # 17
почётный гцупер
Сейчас нет на сайте
zodiak, всё я окончательно запутался... тот код тоже не пашет, хотя его мне дал чел, который оч хорошо знает юнити...
Quote (zodiak)
возьми книжечку по шарпу

Посоветуешь нормальную?

ps попытался заюзать ява скрипт -
Code

var objPoint = GameObject.Find("objPoint1");
function Update () {

  if ((objPoint.transform.position - transform.position) > 1) {
  GameObject.transform.x = objPoint.x;
  GameObject.transform.y = objPoint.y;
  }
   
}
noTformaTДата: Воскресенье, 31 Июля 2011, 12:43 | Сообщение # 18
Ukrainian independent game developer
Сейчас нет на сайте
Quote (AGENTX001)
1) Как определить расстояние до объекта

1)теорема пифагора
2)Есть метод который узнает расстояние от одного Vector3D до другого. Это статический метод класса Vector3D
3)на кройняк послать лучь
Quote (AGENTX001)
2) Как узнать, свободно ли пространство в определённой точке (r_x,r_y)

послать туда луч, если он с чем-то пересечется, то там чет есть smile
Quote (AGENTX001)
Как заставить объект двигаться к заданной точке, при этом оббегая препятствия

с начала нужно создать путь по которому он двигается, смотри в сторону астар, алгоритм а*, и в сторону алгоритма дейкстры smile
Quote (AGENTX001)
ps попытался заюзать ява скрипт -

с юнити уже давненько не работал, но что не так? разве Vector3D - Vector3D = int? вроде бы это выражение вернет другой вектор. Хотя хз, надо в справке посмотреть smile


@noTformaT
AGENTX001Дата: Понедельник, 01 Августа 2011, 13:27 | Сообщение # 19
почётный гцупер
Сейчас нет на сайте
Еше вопросик, неправильно загружается анимированная модэль, боком. Пробовал в максе повернуть, ваще потом не работает... Использую third person controller.
seamanДата: Понедельник, 01 Августа 2011, 15:23 | Сообщение # 20
старожил
Сейчас нет на сайте
Пустой GameObject. К нему ребенком Вашу модель. Крутите пустышку как хотите...
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Пак нубских вопросов юнити 3.х
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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