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

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

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

Unity Мультиплатформенный инструмент для разработки игр

Ответ
 
Опции темы
Старый 15.08.2010, 01:35   #211
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Ответ: Фак по Юнити.

Сообщение от Den Посмотреть сообщение
Как ты построилкривую бизье в гисмозе, да ещё заставил объект по это кривой передвигатся?
http://unity3d.ru/distribution/download/file.php?id=878
В FPS примере используется такая вещь, посмотри там, может что найдешь.
(Offline)
 
Ответить с цитированием
Старый 15.08.2010, 10:07   #212
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

2Den Ответ скрыт во втором посте вот этого топика (ссылка)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
den (15.08.2010)
Старый 15.08.2010, 23:23   #213
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Фак по Юнити.

Всё время писал на JS.
Сейчас решил на C# попробывать.
Вот код на JS
GUI.Label(Rect(10,10,50,100), life);
//где life это int переменная 
а как это сделать на C#
я тока сделал вот что
GUI.Label(new Rect(10,10,50,100), life);
//но он ругается на 2 переменую, типа она должна быть string 
как быть???
(Offline)
 
Ответить с цитированием
Старый 15.08.2010, 23:40   #214
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Вот так:
GUI.Label(new Rect(10,10,50,100), life.ToString()); 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
den (16.08.2010)
Старый 16.08.2010, 16:59   #215
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Фак по Юнити.

вот код меню:
using UnityEngine;
using System.Collections;

public class 
mainMenu MonoBehaviour {
public 
Rect  windowRect1= new Rect (202012050);
public 
Rect  windowRect2= new Rect (202012050);
private 
string b1;
private 
string b2;
private 
bool a=false;
private 
bool menu=false;
public 
float g=5.0f;
void OnGUI()
    {
         if((
menu &&  (Application.loadedLevel==1))||(Application.loadedLevel==0)){windowRect1 GUI.Window (0windowRect1MyWindow1"Main Menu");
            if(
awindowRect2 GUI.Window (0windowRect2MyWindow2"Setting");}
        if(
Application.loadedLevel==0)
        {
            
b1="Play";
            
b2="Exit";
        }
        if(
Application.loadedLevel==1)
        {
            
b1="Continue";
            
b2="Main Menu";
            if(
Input.GetAxis("Esc")!=0)
            {            
                
menu=true;
                
Screen.lockCursor false;
            }
            if(
menuTime.timeScale=0.1f//  СТРОЧКА!!!!
            
else Time.timeScale=1.0f;
        }
    }
    
    
void MyWindow1 (int windowID
    {
        
GUILayout.BeginHorizontal();
        if(
GUILayout.Button(b1))
        {
            if(
Application.loadedLevel==0Application.LoadLevel(1);
            if(
Application.loadedLevel==1)
            {
                
Screen.lockCursor true;
                
menu=false;
            }
        }
        
GUILayout.EndHorizontal();
        
GUILayout.BeginHorizontal();
        if(
GUILayout.Button("Setting")) a=!a;
        
GUILayout.EndHorizontal();
        
GUILayout.BeginHorizontal();
        if(
GUILayout.Button(b2))  // СТРОЧКА!!!
        
{
            if(
Application.loadedLevel==1Application.LoadLevel(0);
            if(
Application.loadedLevel==0Application.Quit();
        }
        
GUILayout.EndHorizontal();
        
//GUI.DragWindow();
    
}
    
void MyWindow2 (int windowID
    {
        
GUILayout.BeginHorizontal();
        
GUILayout.Label("Graphics");
        
GUILayout.EndHorizontal();
        
GUILayout.BeginHorizontal();
        
g=GUILayout.HorizontalSlider(g,0,6);
        if(
g>=&& g<1)
            
QualitySettings.currentLevel QualityLevel.Fastest;
        if(
g>=&& g<2)
            
QualitySettings.currentLevel QualityLevel.Fast;
        if(
g>=&& g<3)
            
QualitySettings.currentLevel QualityLevel.Simple;
        if(
g>=&& g<4)
            
QualitySettings.currentLevel QualityLevel.Good;
        if(
g>=&& g<5)
            
QualitySettings.currentLevel QualityLevel.Beautiful;
        if(
g>=&& g<6)
            
QualitySettings.currentLevel QualityLevel.Fantastic;
        
GUILayout.EndHorizontal();
        
GUILayout.BeginHorizontal();
        if(
GUILayout.Button("Ok")) a=!a;
        
GUILayout.EndHorizontal();
        
//GUI.DragWindow();
    
}

Почему если вместь if(menu) Time.timeScale=0.1f; поставить if(menu) Time.timeScale=0.0f;
то компилятор ругается
ArgumentException: Getting control 0's position in a group with only 0 controls when doing repaint
Aborting

UnityEngine.GUILayoutGroup.GetNext ()
UnityEngine.GUILayoutUtility.DoGetRect (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) [0x00000]
UnityEngine.GUILayoutUtility.GetRect (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) [0x00000]
UnityEngine.GUILayout.DoButton (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) [0x00000]
UnityEngine.GUILayout.Button (System.String text, UnityEngine.GUILayoutOption[] options) [0x00000]
mainMenu.MyWindow1 (Int32 windowID) (at Assets\mainMenu.cs:52)
UnityEngine.GUI+_Window.Do ()
UnityEngine.GUI.EndWindows (UnityEngine.IDList idlist)
UnityEngine.GUIUtility.EndGUI (Int32 doLayout, Int32 doWindows, UnityEngine.IDList idlist)
UnityEditor.EditorGUIUtility:RenderGameViewCameras (Rect, Rect, Boolean, Boolean)
UnityEditor.EditorGUIUtility:RenderGameViewCameras (Rect, Rect, Boolean, Boolean)
UnityEditor.GameView:OnGUI()
System.Reflection.MonoMethod:InternalInvoke(Object , Object[])
System.Reflection.MonoMethod:InternalInvoke(Object , Object[])
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MethodBase:Invoke(Object, Object[])
UnityEditor.HostView:Invoke(String)
UnityEditor.MaximizedHostView:OnGUI()
но не сразу а после нажатия кнопки "Continue" ??
Тыкает меня на if(GUILayout.Button(b2))
Почему?
(Offline)
 
Ответить с цитированием
Старый 16.08.2010, 17:07   #216
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

GUI - это такая хитрая штука в юнити, что за кадр может отрисовываться до пяти раз. Следовательно и код отрисовки тоже столько же раз может повториться. Ошибка эта проявляется тогда, когда у GUI не получается отрисовать один из проходов помоему. Но тут проблема скорее всего не в этом, а в том, что ты читаешь Input в методе OnGUI, а он предназначен для метода Update.

PS: кстати зачем нужна строчка Screen.lockCursor = false;? Не достаточно ли просто его скрыть?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 16.08.2010, 17:27   #217
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Фак по Юнити.

pax, посоветуй как сделать меню в игре на паузе? Чтоб время остановленное было.
(Offline)
 
Ответить с цитированием
Старый 16.08.2010, 18:25   #218
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Фак по Юнити.

Вот новый код:
using UnityEngine
using System.Collections

public class 
MainMenuMonoBehaviour 
public 
Rect  windowRect1= new Rect (202012050); 
public 
Rect  windowRect2= new Rect (202012050); 
private 
string b1
private 
string b2
public 
bool menu=false;
public 
Camera cam;
public 
Transform FPS;
private 
bool a=false
public 
float g=5.0f
void OnGUI() 
    { 
             if((
menu &&  (Application.loadedLevel==1))||(Application.loadedLevel==0)){windowRect1 GUI.Window (0windowRect1MyWindow1"Main Menu"); 
            if(
awindowRect2 GUI.Window (0windowRect2MyWindow2"Setting");}
            if(
menu)
            {
                
Time.timeScale=0.1f// <---- Вот здеся)
            
}
            else 
Time.timeScale=1.0f;
    } 
     
    
void MyWindow1 (int windowID)  
    { 
        
GUILayout.BeginHorizontal(); 
        if(
GUILayout.Button(b1)) 
        { 
            if(
Application.loadedLevel==0Application.LoadLevel(1); 
            if(
Application.loadedLevel==1
            { 
                
Screen.lockCursor true
                
menu=false
            } 
        } 
        
GUILayout.EndHorizontal(); 
        
GUILayout.BeginHorizontal(); 
        if(
GUILayout.Button("Setting")) a=!a
        
GUILayout.EndHorizontal(); 
        
GUILayout.BeginHorizontal(); 
        if(
GUILayout.Button(b2))
        { 
            if(
Application.loadedLevel==1Application.LoadLevel(0); 
            if(
Application.loadedLevel==0Application.Quit(); 
        } 
        
GUILayout.EndHorizontal(); 
        
//GUI.DragWindow(); 
    

    
void MyWindow2 (int windowID)  
    { 
        
GUILayout.BeginHorizontal(); 
        
GUILayout.Label("Graphics"); 
        
GUILayout.EndHorizontal(); 
        
GUILayout.BeginHorizontal(); 
        
g=GUILayout.HorizontalSlider(g,0,6); 
        if(
g>=&& g<1
            
QualitySettings.currentLevel QualityLevel.Fastest
        if(
g>=&& g<2
            
QualitySettings.currentLevel QualityLevel.Fast
        if(
g>=&& g<3
            
QualitySettings.currentLevel QualityLevel.Simple
        if(
g>=&& g<4
            
QualitySettings.currentLevel QualityLevel.Good
        if(
g>=&& g<5
            
QualitySettings.currentLevel QualityLevel.Beautiful
        if(
g>=&& g<6
            
QualitySettings.currentLevel QualityLevel.Fantastic
        
GUILayout.EndHorizontal(); 
        
GUILayout.BeginHorizontal(); 
        if(
GUILayout.Button("Ok")) a=!a
        
GUILayout.EndHorizontal(); 
        
//GUI.DragWindow(); 
    

    
    
void Update()
    {
        if(
Application.loadedLevel==0
        { 
            
b1="Play"
            
b2="Exit"
            
Screen.lockCursor false
        } 
        if(
Application.loadedLevel==1
        { 
            
cam.gameObject.GetComponent<MouseLook>().enabled=!menu;
            
FPS.gameObject.GetComponent<MouseLook>().enabled=!menu;
gameObject.GetComponent<Strelok>().enabled=!menu;
            
b1="Continue"
            
b2="Main Menu"
            if(
Input.GetAxis("Esc")!=0
            {             
                
menu=true
                
Screen.lockCursor false
            } 
        } 
    }

вот новый код.
ошибок некаких не выдаёт.
Но как видно он ставит не на паузу (Time.timeScale=0.1f; ).
А мне надо на паузу (Time.timeScale=0.0f; )
но когда я так изменю строку , игра не снимается с паузы (ошибок никаких не выдаёт).
Помогите!
---------------
---------------
---------------
using UnityEngine;
using System.Collections;

public class 
Apteka MonoBehaviour {
    public  
int  prib=10;
    public 
Collider igrok;
    
void OnCollisionEnter (Collision coll)
    {
        if(
igrok == coll.collider)
            global.
live+=prib
    }

это скрипт аптечки.
igrok - это FPS плэйер
global.live - это его жизни
Но почему скрипт срабатывает только если апчтечка упадёт игроку на голову?

Последний раз редактировалось den, 16.08.2010 в 23:10.
(Offline)
 
Ответить с цитированием
Старый 17.08.2010, 00:09   #219
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Я бы попробовал так:
if(GUILayout.Button(b1))  //или b2
        
{  
             
Time.timeScale=1.0f;
        }

...

            if(
Input.GetButtonDown("Esc"))  
            {              
                
menu=true;  
                
Screen.lockCursor false;  
                
Time.timeScale=0.0f;
            } 
А по поводу второго вот (ссылка) Тока не забудь поставить колайдеру аптечки - is trigger
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
den (17.08.2010)
Старый 17.08.2010, 01:01   #220
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Фак по Юнити.

Я бы попробовал так:
я так тоже пробывал не помогает: главное курсор после нажатия кнопки Esc становится в центр, но не исчезает!
Похуду при timeScale=0 некоторые функции просто неработают.
Но я сделал Time.timeScale=0.001f; ,впринцепе не заметно что игра не на паузе, а просто замедлилась в 1000 раз
------------
А по поводу второго вот (ссылка) Тока не забудь поставить колайдеру аптечки - is trigger
а если у объекта стоит твйрдое тело?
При is trigger он просто проваливается...
(Offline)
 
Ответить с цитированием
Старый 17.08.2010, 11:16   #221
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

А ты попробуй убрать все Screen.lockCursor = true;

Сообщение от Den Посмотреть сообщение
а если у объекта стоит твйрдое тело?
При is trigger он просто проваливается...
Тогда OnCollisionEnter должна быть у игрока, и при столкновении с чем-то он должен проверять, с чем столкнулся. И если это аптечка - то добавлять себе жизней и удалять аптечку. Просто, по моему, OnCollisionEnter вызывается у объектов, которые двигались, а не у тех, которые были неподвижны до столкновения.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 17.08.2010, 18:08   #222
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Фак по Юнити.

bool n=false;
        
GameObject[] vrags GameObject.FindGameObjectsWithTag("vrag"); 
        for(
GameObject vr in vrags)
        {
            if(
Vector3.Distance(vr.transform,transform)<=10)
                
n=true;
        } 
почему не работает?
на JS всё работает, решил на C# переписать нефига!
(Offline)
 
Ответить с цитированием
Старый 17.08.2010, 18:42   #223
h1dd3n
Бывалый
 
Аватар для h1dd3n
 
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений
(для 450 пользователей)
Ответ: Фак по Юнити.

foreach?
(Offline)
 
Ответить с цитированием
Старый 17.08.2010, 18:55   #224
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Фак по Юнити.

foreach?
так чтоли?
bool n=false;
        
GameObject[] vrags GameObject.FindGameObjectsWithTag("vrag"); 
        for(
GameObject vr foreach vrags)
        {
            if(
Vector3.Distance(vr.transform,transform)<=10)
                
n=true;
        } 
можно поконкретнее...
(Offline)
 
Ответить с цитированием
Старый 17.08.2010, 18:58   #225
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Фак по Юнити.

проффи....ыыы...
foreach([var] in [array]){

}
З.Ы. тема почищена
__________________

Последний раз редактировалось SBJoker, 17.08.2010 в 22:35.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
den (17.08.2010), Horror (17.08.2010), Illidan (17.08.2010), pax (17.08.2010)
Ответ


Опции темы

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

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


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


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