Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 23.07.2011, 15:38   #1
PasPar2
AnyKey`щик
 
Аватар для PasPar2
 
Регистрация: 23.07.2011
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Смущение Очень нужна помощь..

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

Начал делать проектик, увидел пример "Tower defense" и загорелся тож его повторить. Сделал модельки, терейн, и встал в ступор как дальше..

Вопрос в том -как реализовать генерацию врагов?..
- как сделать траекторию движения ботов? (хотя пока читал форум в общих чертах понял.. но лучше если объясните.. )
- как выглядит скрипт для расположения башенок на карте по нажатию иконки?
-и последний вопрос, как сделать сетку для расположения башенок? Нарисовать в "Сторонней графической программе" и кинуть на неё определённый скрипт, или есть что то внутри юнитовское...?

Заранее спасибо за ответы.. Знаю что много.. поэтому если не сложно ответте хоть на что то или киньте линк урока.. тоже будет здорово.
(Offline)
 
Ответить с цитированием
Старый 23.07.2011, 16:47   #2
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Очень нужна помощь..

1.Для генерации врагов подготавливаем префаб-модель+скрипты и через Instantiate инстансим префаб там где нам нужно.
2.По террайну расставляете вейпойнты согласно траектории.Скрипт,который нужно вешать на бота здесь на форуме выкладывали.
3.
public Transfotm _tower_Prefab;

void OnGUI()
{
  if(
GUI.Button(new Rect(10705030), "Click me"))
        {
        
Instantiate(_tower_Prefab,Vector3.zeroQuaternion.identity);
         }

По клику инстансим префаб в точке с координатами (0,0,0)
4.За сетку не совсем понял.Как вариант просто создаете массив с узловыми координатами сетки,от них уже можно и плясать.
Vector3 [] _point_List=new Vector3[30]
float _x=0;
float _z=0;
float _j=0;

void Start()
{
 for(
int i=0;i<30;i++)
 {
   
_point_List[i]=new Vector 3(_x,0,_z)
   
_x=i+100f;
   
_j++;
  if(
_j%5==0f)
     {
       
_z=i+50f;
       
_x=0;
       
_j=0;
     }
 }

Таким образом создаем и инициализируем массив для сетки 6х5 с ячейкой 100х50.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.

Последний раз редактировалось Lestar, 23.07.2011 в 19:49.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Lestar за это полезное сообщение:
PasPar2 (26.07.2011), SaM_ (24.07.2011)
Старый 26.07.2011, 21:44   #3
PasPar2
AnyKey`щик
 
Аватар для PasPar2
 
Регистрация: 23.07.2011
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Стрелка Ответ: Очень нужна помощь..

Спасибо вам огромное! оч благодарен. Если еще возникнут вопросы спрошу, но пока все понятно )

И даже получается))

а про сетку я имел ввиду следующее, что бы префаб башенки ставился не в одной координате, ну например 0;0;0; а имеено по сетке в определённом месте поставить. во как
По Вашему скрипту посмотрю, будем надеяться додумаюсь как это реализовать)
(Offline)
 
Ответить с цитированием
Старый 27.07.2011, 19:45   #4
PasPar2
AnyKey`щик
 
Аватар для PasPar2
 
Регистрация: 23.07.2011
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Очень нужна помощь..

А мою сетку можно реализовать так? (Только это будет немного крапотливо, если так можно)

Как Вы сказали рисуем сетку на всё поле, далее создаём empty объекты, и по нужности присваеваем им один из тегов, либо empty Либо Noempty ))
Получаем поле из пустых обеъектов совподающих с сеткой, с тегами. Далее по нажатию кнопки, префаб появляется в координатах курсора, и следует за ним.. И по наведению на пустой объект, сравниваем тэг, если Empty - то префаб окрашивается в зелёный цвет и по нажатию перестаёт следовать за курсором а ставится в координатах этого тела. А его тэг меняется на NoEmpty. Если же тэк уже ноэмпти, то префаб красный и по нажатию ничего не происходит, ну или появляется текстовое сообщения типа "вы тыкаете не туда" во как.. Это реализуемо?
Только откровенно, я только знаю как скрипт сделать на появление префаба, проверку тэга, а вот установку и следование за курсором не знаю.. Может кто то хоть частично написать? (Я представляю какой это будет громадный скрипт... )
(Offline)
 
Ответить с цитированием
Старый 28.07.2011, 00:49   #5
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Очень нужна помощь..

Так можем таскать превив модельки за мышкой.
Ray _ray;
RaycastHit _hit;
bool _previw=false;
bool _instans=false;

void Update()
{
  if(
GUI.Button(new Rect(10705030), "Click me"))
  {
   
_previw=!_previw;
  }  
  if(
_previw)
  {
  
ray=Camera.main.ScreenPointToRay(Input.mousePosition);
     if (
Physics.Raycast(_rayout _hitMathf.Infinity100))
        { 
          if(!
_instans)
          {
           if (
_hit.collider.tag == "Floor")
             {                
              
Instantiate(_tower_Prefab,_hit.point,Quaternion.identity); 
              
_instans=true;                  
             } 
           }
        }
    
transform.position=_hit.point;
  }

Так расставить кубики по узлам сетки
Vector3 [] _point_List=new Vector3[30]
float _x=0;
float _z=0;
float _j=0;


void Start()
{
 for(
int i=0;i<30;i++)
 {
  
_point_List[i]=new Vector 3(_x,0,_z)
  
GameObject _waypoint GameObject.CreatePrimitive(PrimitiveType.Cube);
  
_waypoint.transform.position=_point_List[i];
  
_waypoint.tag="Empty";
   
_x=i+100f;
   
_j++;
  if(
_j%5==0f)
     {
       
_z=i+50f;
       
_x=0;
       
_j=0;
     }
 }

Так реагируем на приближение к обьекту
void OnCollisionEnter(Collision collision)
{
public 
Transfotm _tower_Prefab;
 if(
collision.gameObject.tag=="Empty")
  {
  
renderer.material.color=Color.green;
  if (
Input.GetButtonDown("Fire1"))
   {
    
Gameobject _waypointOn=collision.gameObject;
    
Instantiate(_tower_Prefab,_waypointOn.transform.position,Quaternion.identity);
    
Destroy(_waypointOn);
   }
  } 

В общих чертах логика такая.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
PasPar2 (28.07.2011)
Старый 28.07.2011, 15:11   #6
PasPar2
AnyKey`щик
 
Аватар для PasPar2
 
Регистрация: 23.07.2011
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Стрелка Ответ: Очень нужна помощь..

это 5 +..
Спасибо огромное за помощь!. Ща буду что то творить =))
__________________
Вот это прикооол....
(Offline)
 
Ответить с цитированием
Старый 28.07.2011, 22:12   #7
PasPar2
AnyKey`щик
 
Аватар для PasPar2
 
Регистрация: 23.07.2011
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Очень нужна помощь..

и еще маленький вопросик, как инициировать таймер?

Ну вот примерно
 using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour {
	public GameObject _enemy;

	
	public void Start(){
        GUI.Button(new Rect(10, 70, 50, 30), "Click me");
        if (Input.GetButtonDown("Click me"))
   {
		Instantiate(_enemy,transform.position,transform.rotation);
		
	}
// а теперь вот сдесь нужно воткнуть таймер ну например на 3 секунды.. 
и зациклить появление 10 врагов, ну уже без нажатия кнопочки..
}
Если не сложно добавьте строчечку.. )
И еще.. почему то кнопки нету ( Скрипт юзаю на мейн камеру, т. к других не предвещается.. Но кнопочки на экране нет Смысл кнопочки запустить уровень, то бишь что бы не сразу при появлении топали толпы а после нажатия.
__________________
Вот это прикооол....
(Offline)
 
Ответить с цитированием
Старый 29.07.2011, 00:20   #8
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Очень нужна помощь..

Кнопки и не будет. GUI класс нужно вызывать только в OnGUI(),а никак не в Start().
Так будет инстансить каждые 3 секунды и по клику,но по клику в общую кассу считаться не будет.
using UnityEngine;
using System.Collections;

public class 
NewBehaviourScript MonoBehaviour
{
    public 
GameObject _enemy;
    
int _enemyCalc 0;
    
float _time 0;
    
int _timeCalc 0;
    
    
void OnGUI()
    {
      
        if (
GUI.Button(new Rect(10705030), "Click me"))
        {
            
Instantiate(_enemytransform.positiontransform.rotation);
        }
    }

    
void Update()
    {
        if (
_enemyCalc<=10)
        {
           
float _delta_Time Time.time _time;
           if (
_delta_Time >= 1)
           {
               
_time Time.time;
               
_timeCalc++;
               if (
_timeCalc%3==0)
               {
                   
Instantiate(_enemytransform.positiontransform.rotation);
                   
_enemyCalc++;
               }
           }
        }
    }

__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.

Последний раз редактировалось Lestar, 29.07.2011 в 01:44.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
PasPar2 (29.07.2011)
Старый 29.07.2011, 23:50   #9
PasPar2
AnyKey`щик
 
Аватар для PasPar2
 
Регистрация: 23.07.2011
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Очень нужна помощь..

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

И еще, как заменить префаб? ну то есть есть кнопочка усовершенствования, при выделении башни, и при нажатти один префаб разрушается, второй на его место ставится? через Instantiate? просто convert я видел только заменяют типы им.. Хотя мой опыт это неделя интенсивного изучения

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

ТОлько потом еще спрошу как выкладывать.. *жутко покраснел*
__________________
Вот это прикооол....
(Offline)
 
Ответить с цитированием
Старый 30.07.2011, 00:41   #10
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Очень нужна помощь..

(GUI.Button(new Rect(10705030), "Click me"
Код отвечает за кнопку.Корректно удалить,кнопки не будет.

Разрушаем старую,на ее место ставим новую башню.
if (GUI.Button(new Rect(10705030), "Tower Up"))
        {
             
Vector3 _enemy_Position=transform.position;
             
Quaternion _enemy_Rotation=transform.rotation;
             
Destroy(gameObject);
             
Instantiate(_tru_Enemy_enemy_Position_enemy_Rotation);
        } 
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Старый 30.07.2011, 23:26   #11
PasPar2
AnyKey`щик
 
Аватар для PasPar2
 
Регистрация: 23.07.2011
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Очень нужна помощь..

А вы не могли бы подсказать какой нибудь рускоязычный сайт по юнити (именно теорию).. а то мне уже стыдно такие элементарные вещи спрашивать.. =)

Но я теперь не знаю как поставить точки движения.. Или это делается так же как и сетка? потому что я точных координат движения не знаю, а ставлю пустышки по траектории - они в роли точек не годятся (
я имею ввиду вейпойнты..
__________________
Вот это прикооол....
(Offline)
 
Ответить с цитированием
Старый 31.07.2011, 00:35   #12
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Очень нужна помощь..

Unity3d.ru

По какой то причине не годятся вам пустышки,поставьте кубики и снимите галку с mesh renderer.

Вам кроме Unity программированию нужно обучаться.Почитайте Шилдта "C# полное руководство".У вас нет понимания того,что вы пишите.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Старый 31.07.2011, 13:15   #13
PasPar2
AnyKey`щик
 
Аватар для PasPar2
 
Регистрация: 23.07.2011
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Очень нужна помощь..

вот и я о том же.. Нет понимания потому что теории знаю, токлько как юнити запускать =)))))))) Спасибо почитаю. Думал с ходу пойму, а не тут то было ) Лан спасиб вернусь буду ассом )
__________________
Вот это прикооол....
(Offline)
 
Ответить с цитированием
Старый 31.07.2011, 14:25   #14
PasPar2
AnyKey`щик
 
Аватар для PasPar2
 
Регистрация: 23.07.2011
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Очень нужна помощь..

Сообщение от PasPar2 Посмотреть сообщение
вот и я о том же.. Нет понимания потому что теории знаю, токлько как юнити запускать =)))))))) Спасибо почитаю. Думал с ходу пойму, а не тут то было ) Лан спасиб вернусь буду ассом )
А про пустышки тут даже проблема не в том что они не подходят, при запуске скрипта он не движется к ним самостоятельно, и перед запуском поместить в скрипт, нельзя, но за то если префаб со скриптом поставить на карту, то пустышки спокойно ставятся в роли точек.. но тогда те что появляются все равно без точек.. а только те что я поставил в ручную.
__________________
Вот это прикооол....
(Offline)
 
Ответить с цитированием
Старый 31.07.2011, 14:28   #15
PasPar2
AnyKey`щик
 
Аватар для PasPar2
 
Регистрация: 23.07.2011
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Очень нужна помощь..

о все.. разобрался )) не от туда пихал просто %)
__________________
Вот это прикооол....
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:32.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com