FPS Totorial - Форум Игроделов
Чт, 30 Май 2024, 15:06 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
FPS Totorial
MaxmekhedenkoДата: Чт, 04 Окт 2012, 23:21 | Сообщение # 1
Нет аватара
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Сейчас изучаю fps tutorial и появился вопрос.
как сделать так чтобы когда убиваешь робота появлялся новый в случайном месте?
 
СообщениеСейчас изучаю fps tutorial и появился вопрос.
как сделать так чтобы когда убиваешь робота появлялся новый в случайном месте?

Автор - Maxmekhedenko
Дата добавления - 04 Окт 2012 в 23:21
TushkaNДата: Чт, 04 Окт 2012, 23:36 | Сообщение # 2
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
для этого можно использовать
Code
Instantiate(gameObject,new Vector3(Random.Range(0,250),Random.Range(1,5),Random.Range(0,250)),Quaternion.Euler(new Vector3(0,0,0)));

там где gameObject туда мы суем то что должно создаться в данном случае префаб робота.
второе new Vector3 это рандомное положение по трем осям от позиции 0 до 250 ну тут сам задашь как пожелаешь.
последнее кватернион это направление куда он будет смотреть когда появится я оставил его нулевым там изменишь как пожелаешь.

ps забыл указать что этот код стоит тыкать в момент уничтожения\смерти\удаления(как пожелаешь) робота.


TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.


Сообщение отредактировал TushkaN - Чт, 04 Окт 2012, 23:38
 
Сообщениедля этого можно использовать
Code
Instantiate(gameObject,new Vector3(Random.Range(0,250),Random.Range(1,5),Random.Range(0,250)),Quaternion.Euler(new Vector3(0,0,0)));

там где gameObject туда мы суем то что должно создаться в данном случае префаб робота.
второе new Vector3 это рандомное положение по трем осям от позиции 0 до 250 ну тут сам задашь как пожелаешь.
последнее кватернион это направление куда он будет смотреть когда появится я оставил его нулевым там изменишь как пожелаешь.

ps забыл указать что этот код стоит тыкать в момент уничтожения\смерти\удаления(как пожелаешь) робота.

Автор - TushkaN
Дата добавления - 04 Окт 2012 в 23:36
MaxmekhedenkoДата: Чт, 04 Окт 2012, 23:42 | Сообщение # 3
Нет аватара
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Я уже пытался но у меня робот уничтожался а новый ни века кую появляться не хотел
 
СообщениеЯ уже пытался но у меня робот уничтожался а новый ни века кую появляться не хотел

Автор - Maxmekhedenko
Дата добавления - 04 Окт 2012 в 23:42
TushkaNДата: Чт, 04 Окт 2012, 23:47 | Сообщение # 4
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
попробуй просто вставить код который я написал выше в событие удаления
C#
Code
  
void OnDestroy()
  {
  Instantiate(gameObject,new Vector3(Random.Range(0,250),Random.Range(1,5),Random.Range(0,250)),Quaternion.Euler(new Vector3(0,0,0)));
  }

если не создастся обьект с именем(Clone) тогда нужно глянуть что у тебя там если сработает то видемо создание было вписано но не задействовано.


TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.
 
Сообщениепопробуй просто вставить код который я написал выше в событие удаления
C#
Code
  
void OnDestroy()
  {
  Instantiate(gameObject,new Vector3(Random.Range(0,250),Random.Range(1,5),Random.Range(0,250)),Quaternion.Euler(new Vector3(0,0,0)));
  }

если не создастся обьект с именем(Clone) тогда нужно глянуть что у тебя там если сработает то видемо создание было вписано но не задействовано.

Автор - TushkaN
Дата добавления - 04 Окт 2012 в 23:47
MaxmekhedenkoДата: Пт, 05 Окт 2012, 00:14 | Сообщение # 5
Нет аватара
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Все спасибо я написал неправильно вот и не работало)))

Добавлено (05.10.2012, 00:09)
---------------------------------------------
Вроде с этим разобрался и понял как это все работает, но появился новый вопрос
Как создать несколько точек в которых может появляться робот

Добавлено (05.10.2012, 00:14)
---------------------------------------------
Вроде с этим разобрался и понял как это все работает, но появился новый вопрос
Как создать несколько точек в которых может появляться робот

 
СообщениеВсе спасибо я написал неправильно вот и не работало)))

Добавлено (05.10.2012, 00:09)
---------------------------------------------
Вроде с этим разобрался и понял как это все работает, но появился новый вопрос
Как создать несколько точек в которых может появляться робот

Добавлено (05.10.2012, 00:14)
---------------------------------------------
Вроде с этим разобрался и понял как это все работает, но появился новый вопрос
Как создать несколько точек в которых может появляться робот


Автор - Maxmekhedenko
Дата добавления - 05 Окт 2012 в 00:14
TushkaNДата: Пт, 05 Окт 2012, 00:35 | Сообщение # 6
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
это тоже относительно просто тут несколько вариантов.
1) мы делаем объект и называем его типо waypoint_inst , расставляем в нужных местах впихиваем их в массив нашего робота где они рандомом будет выберать позицию вот пример скрипта
Code

using UnityEngine;
using System.Collections;

public class way_str : MonoBehaviour {
     
   public Transform[] way_str=new Transform[2];
     
   void OnDestroy()
   {
   int rand=Random.Range(0,way_str.Length-1);
   Instantiate(gameObject,way_str[rand].position,way_str[rand].rotation);
   }
}

2) уже посложнее так как сдесь мы будем кодом искать обьекты в сцене и добовлять их в наши вайпоинты
Code

using UnityEngine;
using System.Collections;

public class way_str : MonoBehaviour {
     
   private GameObject[] way_str_obj;
     
   void Start()
   {
    way_str_obj=GameObject.FindGameObjectsWithTag("wayp_inst");
   }
     
   void OnDestroy()
   {
   int rand=Random.Range(0,way_str_obj.Length);
   Transform way_str=way_str_obj[rand].transform;
   Instantiate(gameObject,way_str.position,way_str.rotation);
   }
}


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

ps я допустил ошибку во втором коде уже исправил в рандоме -1 уже не требуется.


TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.


Сообщение отредактировал TushkaN - Пт, 05 Окт 2012, 00:44
 
Сообщениеэто тоже относительно просто тут несколько вариантов.
1) мы делаем объект и называем его типо waypoint_inst , расставляем в нужных местах впихиваем их в массив нашего робота где они рандомом будет выберать позицию вот пример скрипта
Code

using UnityEngine;
using System.Collections;

public class way_str : MonoBehaviour {
     
   public Transform[] way_str=new Transform[2];
     
   void OnDestroy()
   {
   int rand=Random.Range(0,way_str.Length-1);
   Instantiate(gameObject,way_str[rand].position,way_str[rand].rotation);
   }
}

2) уже посложнее так как сдесь мы будем кодом искать обьекты в сцене и добовлять их в наши вайпоинты
Code

using UnityEngine;
using System.Collections;

public class way_str : MonoBehaviour {
     
   private GameObject[] way_str_obj;
     
   void Start()
   {
    way_str_obj=GameObject.FindGameObjectsWithTag("wayp_inst");
   }
     
   void OnDestroy()
   {
   int rand=Random.Range(0,way_str_obj.Length);
   Transform way_str=way_str_obj[rand].transform;
   Instantiate(gameObject,way_str.position,way_str.rotation);
   }
}


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

ps я допустил ошибку во втором коде уже исправил в рандоме -1 уже не требуется.

Автор - TushkaN
Дата добавления - 05 Окт 2012 в 00:35
MaxmekhedenkoДата: Пт, 05 Окт 2012, 16:19 | Сообщение # 7
Нет аватара
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Огромное спасибо за такое разъяснение

Странно сегодня снова скрипт первый не работает
 
СообщениеОгромное спасибо за такое разъяснение

Странно сегодня снова скрипт первый не работает

Автор - Maxmekhedenko
Дата добавления - 05 Окт 2012 в 16:19
TushkaNДата: Пт, 05 Окт 2012, 16:44 | Сообщение # 8
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
для первого скрипта нужно добавить в его массив сами объекты где он должен появляться.

TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.
 
Сообщениедля первого скрипта нужно добавить в его массив сами объекты где он должен появляться.

Автор - TushkaN
Дата добавления - 05 Окт 2012 в 16:44
MaxmekhedenkoДата: Пт, 05 Окт 2012, 17:40 | Сообщение # 9
Нет аватара
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
я про этот[code void OnDestroy()
{
Instantiate(gameObject,new Vector3(Random.Range(0,250),Random.Range(1,5),Random.Range(0,250)),Quaternion.Euler(new Vector3(0,0,0)));
}
[/code]

Добавлено (05.10.2012, 17:40)
---------------------------------------------
Робот после выполнения скрипта появляется но он неподвижен
как сделать что бы он двигался???

 
Сообщениея про этот[code void OnDestroy()
{
Instantiate(gameObject,new Vector3(Random.Range(0,250),Random.Range(1,5),Random.Range(0,250)),Quaternion.Euler(new Vector3(0,0,0)));
}
[/code]

Добавлено (05.10.2012, 17:40)
---------------------------------------------
Робот после выполнения скрипта появляется но он неподвижен
как сделать что бы он двигался???


Автор - Maxmekhedenko
Дата добавления - 05 Окт 2012 в 17:40
TushkaNДата: Пт, 05 Окт 2012, 18:17 | Сообщение # 10
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
не подвижен хмм, возможно из за того что у него нет жизней и их нужно востановить кстати наверное проще будет сделать префаб робота, что бы создовать уже заготовку а не клон убитого бота.

TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.
 
Сообщениене подвижен хмм, возможно из за того что у него нет жизней и их нужно востановить кстати наверное проще будет сделать префаб робота, что бы создовать уже заготовку а не клон убитого бота.

Автор - TushkaN
Дата добавления - 05 Окт 2012 в 18:17
MaxmekhedenkoДата: Пт, 05 Окт 2012, 18:34 | Сообщение # 11
Нет аватара
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
TushkaN,
а как это правильно делать???
 
СообщениеTushkaN,
а как это правильно делать???

Автор - Maxmekhedenko
Дата добавления - 05 Окт 2012 в 18:34
TushkaNДата: Пт, 05 Окт 2012, 19:39 | Сообщение # 12
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
если имеется префаб робота в проекте, то можем просто использовать его для создания оригинальных копий, если его нет и робот был построен только в игровой сцене тогда нужно в проекте создать префаб обьект который после и будем использовать для создания копий без изменений, что бы создать префаб кликаем среди файлов ассеста правой клавишей мыши и там create>prefab и туда из игровой сцены скидываем нашего робота, после обновляем наш скриптик (он получился слегка толстоват просто оптимизировать слегка лень)
Code
using UnityEngine;
using System.Collections;

//[ExecuteInEditMode]
public class script_name : MonoBehaviour {
   
  private GameObject[] way_str_obj;
  public GameObject gO;  
   
  void Start()
  {
   way_str_obj=GameObject.FindGameObjectsWithTag("wayp_inst");
  }
   
  void OnDestroy()
  {
  int rand=Random.Range(0,way_str_obj.Length);
  Transform way_str=way_str_obj[rand].transform;
   print(rand);
  GameObject go=(GameObject)Instantiate(gO,way_str.position,way_str.rotation);
   go.GetComponent<script_name>().gO=gO;
  }
}

возвращаем префаб на игровое поле, и помещаем префаб который лежит в проекте в нынешнего бота.
наверное сложно все описал будут вопросы спрашивай буду как можно проще обьяснять.


TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.
 
Сообщениеесли имеется префаб робота в проекте, то можем просто использовать его для создания оригинальных копий, если его нет и робот был построен только в игровой сцене тогда нужно в проекте создать префаб обьект который после и будем использовать для создания копий без изменений, что бы создать префаб кликаем среди файлов ассеста правой клавишей мыши и там create>prefab и туда из игровой сцены скидываем нашего робота, после обновляем наш скриптик (он получился слегка толстоват просто оптимизировать слегка лень)
Code
using UnityEngine;
using System.Collections;

//[ExecuteInEditMode]
public class script_name : MonoBehaviour {
   
  private GameObject[] way_str_obj;
  public GameObject gO;  
   
  void Start()
  {
   way_str_obj=GameObject.FindGameObjectsWithTag("wayp_inst");
  }
   
  void OnDestroy()
  {
  int rand=Random.Range(0,way_str_obj.Length);
  Transform way_str=way_str_obj[rand].transform;
   print(rand);
  GameObject go=(GameObject)Instantiate(gO,way_str.position,way_str.rotation);
   go.GetComponent<script_name>().gO=gO;
  }
}

возвращаем префаб на игровое поле, и помещаем префаб который лежит в проекте в нынешнего бота.
наверное сложно все описал будут вопросы спрашивай буду как можно проще обьяснять.

Автор - TushkaN
Дата добавления - 05 Окт 2012 в 19:39
MaxmekhedenkoДата: Пт, 05 Окт 2012, 21:14 | Сообщение # 13
Нет аватара
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
есть папка enemy prefabs там есть префаб Robot
куда в скрипте подставлять имя префаба???
 
Сообщениеесть папка enemy prefabs там есть префаб Robot
куда в скрипте подставлять имя префаба???

Автор - Maxmekhedenko
Дата добавления - 05 Окт 2012 в 21:14
TushkaNДата: Сб, 06 Окт 2012, 00:30 | Сообщение # 14
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
думаю достаточно просто переместить в скрипт там найдешь место оно предположительно должно быть пустым.

TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.
 
Сообщениедумаю достаточно просто переместить в скрипт там найдешь место оно предположительно должно быть пустым.

Автор - TushkaN
Дата добавления - 06 Окт 2012 в 00:30
MaxmekhedenkoДата: Сб, 06 Окт 2012, 15:55 | Сообщение # 15
Нет аватара
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Для меня это немного сложновато
Можешь объяснить как в самом первом коде использовать префаб
 
СообщениеДля меня это немного сложновато
Можешь объяснить как в самом первом коде использовать префаб

Автор - Maxmekhedenko
Дата добавления - 06 Окт 2012 в 15:55
TushkaNДата: Сб, 06 Окт 2012, 17:14 | Сообщение # 16
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
хорошо, в общем дело обстоит так, что бы вызвать префаб в игровом объекте его нужно поместить в скрипт, но сперва в скрипте нужно создать переменную которую можно будет менять вручную, такие переменные создаются с помощью дополнительной команды public(публичная переменная) или private(внутренняя переменная), публичные переменные как раз таки и можем менять вручную или из других скриптов, приватные переменные мы менять можем только с помощью внутрескриптовых команд, теперь из теории в практику.
Переменным нужно указать ихнее предназначение например как в данном случае нужно создать переменную для хранения префаба код для этого пишется таким образом
Code
public GameObject val_name;

хочу заметить что создавать публичные и приватные переменные можно только в начале скрипта, это между вот этими участками кода
Code

public class script_name : MonoBehaviour {

public GameObject val_name;//тут

  void Start ()
...

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

using UnityEngine;
using System.Collections;

public class script_name : MonoBehaviour {

public GameObject val_name; //создаем область для хранения префаба

void  Start (){

}

  void OnDestroy()
   {
  if (val_name) //что бы лишний раз не ругался проверяем существует ли префаб в переменной или нет
   Instantiate(val_name,new Vector3(Random.Range(0,250),Random.Range(1,5),Random.Range(0,250)),Quaternion.Euler(new Vector3(0,0,0)));// создаем префаб в рандомном месте
   }
}

в общем как то так, если что спрашивай попробую ответить как можно подробнее.


TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.
 
Сообщениехорошо, в общем дело обстоит так, что бы вызвать префаб в игровом объекте его нужно поместить в скрипт, но сперва в скрипте нужно создать переменную которую можно будет менять вручную, такие переменные создаются с помощью дополнительной команды public(публичная переменная) или private(внутренняя переменная), публичные переменные как раз таки и можем менять вручную или из других скриптов, приватные переменные мы менять можем только с помощью внутрескриптовых команд, теперь из теории в практику.
Переменным нужно указать ихнее предназначение например как в данном случае нужно создать переменную для хранения префаба код для этого пишется таким образом
Code
public GameObject val_name;

хочу заметить что создавать публичные и приватные переменные можно только в начале скрипта, это между вот этими участками кода
Code

public class script_name : MonoBehaviour {

public GameObject val_name;//тут

  void Start ()
...

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

using UnityEngine;
using System.Collections;

public class script_name : MonoBehaviour {

public GameObject val_name; //создаем область для хранения префаба

void  Start (){

}

  void OnDestroy()
   {
  if (val_name) //что бы лишний раз не ругался проверяем существует ли префаб в переменной или нет
   Instantiate(val_name,new Vector3(Random.Range(0,250),Random.Range(1,5),Random.Range(0,250)),Quaternion.Euler(new Vector3(0,0,0)));// создаем префаб в рандомном месте
   }
}

в общем как то так, если что спрашивай попробую ответить как можно подробнее.

Автор - TushkaN
Дата добавления - 06 Окт 2012 в 17:14
MaxmekhedenkoДата: Сб, 06 Окт 2012, 17:34 | Сообщение # 17
Нет аватара
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Теперь понял
А еще я понял почему не двигались роботы
когда создавался клон у него были отключены скрипты AI,Animation,AIAnimation и Damage

Добавлено (06.10.2012, 17:34)
---------------------------------------------
Может можно как нибудь сделать что бы когда появлялся клон у него активировались скрипты???

 
СообщениеТеперь понял
А еще я понял почему не двигались роботы
когда создавался клон у него были отключены скрипты AI,Animation,AIAnimation и Damage

Добавлено (06.10.2012, 17:34)
---------------------------------------------
Может можно как нибудь сделать что бы когда появлялся клон у него активировались скрипты???


Автор - Maxmekhedenko
Дата добавления - 06 Окт 2012 в 17:34
TushkaNДата: Сб, 06 Окт 2012, 17:51 | Сообщение # 18
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
да можно это делает обращением к скрипту,
Code
transform.GetComponent<script_name>().enabled=true;
это стоит поместить в старт что бы проверялось при создании.


TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.
 
Сообщениеда можно это делает обращением к скрипту,
Code
transform.GetComponent<script_name>().enabled=true;
это стоит поместить в старт что бы проверялось при создании.

Автор - TushkaN
Дата добавления - 06 Окт 2012 в 17:51
MaxmekhedenkoДата: Сб, 06 Окт 2012, 17:53 | Сообщение # 19
Нет аватара
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Сейчас попробую
 
СообщениеСейчас попробую

Автор - Maxmekhedenko
Дата добавления - 06 Окт 2012 в 17:53
ЛевшаДата: Вс, 07 Окт 2012, 00:42 | Сообщение # 20
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
instantiate, parent

X.cor.R (Prologue)
 
Сообщениеinstantiate, parent

Автор - Левша
Дата добавления - 07 Окт 2012 в 00:42
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024