|
Unity Мультиплатформенный инструмент для разработки игр |
01.05.2011, 22:36
|
#391
|
AnyKey`щик
Регистрация: 24.11.2010
Сообщений: 7
Написано одно полезное сообщение
|
Ответ: Фак по Юнити.
Буду внимательнее читать документацию.
|
(Offline)
|
|
08.06.2011, 09:18
|
#392
|
Элита
Регистрация: 26.07.2008
Сообщений: 1,972
Написано 1,095 полезных сообщений (для 3,923 пользователей)
|
Ответ: Фак по Юнити.
http://entitycrisis.blogspot.com/201...occlusion.html
Increpare на форуме тигсурса выложил сию ссылку. Фальшивый вертексный эмбиент окклюжн - для настоящих инди-мэнов! (не проверял, но, думаю, должно быть красиво и дешево)
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Nuprahtor за это полезное сообщение:
|
|
08.06.2011, 10:09
|
#393
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Красиво будет, если очень много вершин в модели. Для низкополигональных проще использовать лайтмэпу.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.06.2011, 19:11
|
#394
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
Объясните как пользоваться функцией типа Random. Что бы при определенном действии случайно выбиралась одна из заранее заданных форм. Например, при передвижении игрока, включалась Одна из Нескольких анимаций.
|
(Offline)
|
|
16.06.2011, 19:23
|
#395
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
int variable = UnityEngine.Random.Range(0, 5);
switch(variable)
{
case 0:
//играем анимацию 1
break;
..............
case 5:
//играем анимацию 6
break;
}
Последний раз редактировалось Lestar, 17.06.2011 в 00:41.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.06.2011, 23:58
|
#396
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
function OnCollisionEnter(collision : Collision) { for (var contact : ContactPoint in collision.contacts) { Debug.DrawRay(contact.point, contact.normal, Color.white); } if (collision.relativeVelocity.magnitude > 0.1) Destroy (gameObject); }
В данном случае объект, к которому применен скрипт уничтожается при столкновении с Любым другим телом.
Что изменить, что бы объект уничтожался при с столкновении с Определенным телом?
|
(Offline)
|
|
19.06.2011, 02:45
|
#397
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Например так:
function OnCollisionEnter(collision : Collision) { for (var contact : ContactPoint in collision.contacts) { Debug.DrawRay(contact.point, contact.normal, Color.white); } if (collision.gameObject.Tag == "Player") Destroy (gameObject); }
Игроку надо будет назначить тэг Player и тогда объект будет уничтожен при столкновении с игроком.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
19.06.2011, 13:35
|
#398
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
Спасибо, работает. Хотя, мне кажется, что будет лучше, если тег объекта будет с маленькой буквы. У меня скрипт заработал только при таком условии.
Как сделать задержку выполнения действия после столкновения?
|
(Offline)
|
|
19.06.2011, 13:36
|
#399
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Что-то вроде:
var time : float = 2;
function OnCollisionEnter(collision : Collision) { for (var contact : ContactPoint in collision.contacts) { Debug.DrawRay(contact.point, contact.normal, Color.white); } if (collision.gameObject.Tag == "Player") Invoke ("DestroySelf", time ); }
function DestroySelf(){ Destroy (gameObject); }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.06.2011, 14:26
|
#400
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
Возник еще один вопрос
Как поменять значение переменной через определенный промежуток времени после старта? (Использую js)
|
(Offline)
|
|
19.06.2011, 14:34
|
#401
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Ну очевидно жеж из предыдущего примера:
var time : float = 2; var mayVar : int = 1;
function Start() { Invoke ("ChangeValue", time ); }
function ChangeValue(){ mayVar = 2; }
или
var time : float = 2; var mayVar : int = 1;
function Start() { yield WaitForSeconds(time); mayVar = 2; }
|
(Offline)
|
|
19.06.2011, 14:36
|
#402
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
var my_TIme : float; var my_Variable :float=5; function Update () { my_Time=Time.time ; if(my_Time>=30) { my_Variable=15; } }
В зависимости от нужды вместо Time.time использовать Time.timeSinceLevelLoad .
P.S. Pax,мне кажется ему еще рановато делегаты использовать
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.06.2011, 14:58
|
#403
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
Lestar, я js только вчера начал учить, мне многое еще рано
И все же не могу я разобраться:
var apple : Rigidbody; var time : float; var x : float = 1; //Начальное значение переменной "x", как я понял?
function Update () { time=Time.timeSinceLevelLoad;
if(time>=1) { x = Random.Range(5, 21); } if(time>=30) { x = Random.Range(1, 6); } }
InvokeRepeating("LaunchProjectile", 2, (x)); //"x" - та самая переменная, обозначающая промежуток между спавнами
function LaunchProjectile () { instance = Instantiate(apple,transform.position, transform.rotation); instance.velocity = transform.TransformDirection( Vector3( 0, 0, 0 ) ); }
Вот мой скрипт спавна. Что не так? Ибо изменение колва спавнющихся объектов со временем не меняется, хотя игра запускается.
|
(Offline)
|
|
19.06.2011, 15:06
|
#404
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
По приведенному примеру можно сделать так:
var time : float = 2; var x : float = 1;
function Start() { yield WaitForSeconds(1); x = Random.Range(5, 21); yield WaitForSeconds(29); x = Random.Range(1, 6); }
А вообще строка
InvokeRepeating("LaunchProjectile", 2, (x));
выполняется только один раз
Я бы переписал скрипт так:
var apple : Rigidbody; var time : float; var x : float = 1; //Начальное значение переменной "x", как я понял?
function Start() { yield WaitForSeconds(1); x = Random.Range(5, 21); yield WaitForSeconds(29); x = Random.Range(1, 6); }
Invoke("LaunchProjectile", x); //"x" - та самая переменная, обозначающая промежуток между спавнами
function LaunchProjectile () { instance = Instantiate(apple,transform.position, transform.rotation); instance.velocity = transform.TransformDirection( Vector3( 0, 0, 0 ) ); Invoke("LaunchProjectile", x); }
Хотя на js это может выглядеть так, я js плохо знаю для unity, лучше C#:
var apple : Rigidbody; var time : float; var x : float = 1; //Начальное значение переменной "x", как я понял?
Invoke("LaunchProjectile", x); //"x" - та самая переменная, обозначающая промежуток между спавнами
yield WaitForSeconds(1); x = Random.Range(5, 21); yield WaitForSeconds(29); x = Random.Range(1, 6);
function LaunchProjectile () { instance = Instantiate(apple,transform.position, transform.rotation); instance.velocity = transform.TransformDirection( Vector3( 0, 0, 0 ) ); Invoke("LaunchProjectile", x); }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.06.2011, 15:22
|
#405
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
var apple : Rigidbody; var time : float; var next_Instans : float = 0; var x : float = 1;
function Update () { time=Time.timeSinceLevelLoad;
if(time<30) { x = Random.Range(5, 21); } else { x = Random.Range(1, 6); }
if(time>=next_Instans) { LaunchProjectile (); next_Instans+=x; } }
function LaunchProjectile () { instance = Instantiate(apple,transform.position, transform.rotation); instance.velocity = transform.TransformDirection( Vector3( 0, 0, 0 ) ); }
P.S. Не очень красиво,но для новичка будет проще разобраться в алгоритме.Я тоже предпочитаю C# и если начинать,то начинать его учить.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:14.
|