Вопрос-[ответ] по Unity
| |
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
lorenze | Дата: Среда, 19 Января 2011, 12:45 | Сообщение # 201 |
заслуженный участник
Сейчас нет на сайте
| Quote (SlavyanOOs) Да к у него же есть макс. +, с чистым fbx бывают глюки. Лучше юзать родной формат. Только не надо глупости писать, FBX/obj унифицированный формат, глюки бывают от кривых рук.
Релизы http://gcup.ru/forum/28-12854-1 http://gcup.ru/forum/28-19003-1
|
|
| |
SnakeR | Дата: Среда, 19 Января 2011, 14:43 | Сообщение # 202 |
постоянный участник
Сейчас нет на сайте
| Допустим у нас есть код на Java Script Code function Update () {
if (Input.GetKey (KeyCode.LeftArrow))
transform.Rotate(0, 0, 2);
if (Input.GetKey (KeyCode.RightArrow))
transform.Rotate(0, 0, -0.1); } При нажатии кнопок поворачивает объект на заданный шаг в скобках идут оси (x, y, z), т.е. там числовые значения. Нужно, переписать код так, чтобы вместо числа подставлять значение, вычисленное в другой функции например Code function sdvig(shag) { shag = 6 * 2; } Помогите пожалуйста =) Возможно функцию вращения необходимо писать по другому?
Unity3D Developer Ваш лучший помощник при разработке в Unity3D
|
|
| |
Lord_F | Дата: Среда, 19 Января 2011, 14:54 | Сообщение # 203 |
Любопытный Игродел
Сейчас нет на сайте
| а в JS в функциях разве нету return?
[quote]Ничто не истина, всё дозволено[/quote]
|
|
| |
SnakeR | Дата: Среда, 19 Января 2011, 15:00 | Сообщение # 204 |
постоянный участник
Сейчас нет на сайте
| есть, но что мне возвращать? и что подставлять потом в скобку с осями? Добавлено (19.01.2011, 15:00) --------------------------------------------- Все нашел в мануале, мануал по скриптам надо переводить, на англ не всегда понятно вот если кому интересно Code function Update () { var rpm = 10.1f; var bloc = 2.0f; var go : float = rpm * bloc; if (Input.GetKey (KeyCode.LeftArrow))
transform.Rotate(0, 0, go);
if (Input.GetKey (KeyCode.RightArrow))
transform.Rotate(0, 0, -0.1); } осталось придумать как эту переменную go считать отдельно, причем желательно в другом скрипте.
Unity3D Developer Ваш лучший помощник при разработке в Unity3D
|
|
| |
Lord_F | Дата: Среда, 19 Января 2011, 15:02 | Сообщение # 205 |
Любопытный Игродел
Сейчас нет на сайте
| С вашим примером можно сделать так: Code function sdvig() { return 6 * 2; } а в скобку с осями поставить Code transform.Rotate(0, 0, sdvig());
[quote]Ничто не истина, всё дозволено[/quote]
|
|
| |
SnakeR | Дата: Среда, 19 Января 2011, 15:18 | Сообщение # 206 |
постоянный участник
Сейчас нет на сайте
| разделил на два скрипта Code function Update () { public var rpm = 10.1f; public var bloc = 2.0f; public var go : float = rpm * bloc; } и Code public var go;
function Update () {
if (Input.GetKey (KeyCode.LeftArrow))
transform.Rotate(0, 0, go);
if (Input.GetKey (KeyCode.RightArrow))
transform.Rotate(0, 0, -0.1); } ошибок не выдает, но и влево не крутит. Не пойму как передать переменную из скрипта в скрипт.
Unity3D Developer Ваш лучший помощник при разработке в Unity3D
Сообщение отредактировал SnakeR - Среда, 19 Января 2011, 15:18 |
|
| |
Lord_F | Дата: Среда, 19 Января 2011, 15:20 | Сообщение # 207 |
Любопытный Игродел
Сейчас нет на сайте
| Он наверное первый Update только выполняет. Попробуйте мой вариант.
[quote]Ничто не истина, всё дозволено[/quote]
|
|
| |
SnakeR | Дата: Среда, 19 Января 2011, 15:21 | Сообщение # 208 |
постоянный участник
Сейчас нет на сайте
| Ваш вариант работает когда все в одном скрипте, мне необходимо разделить на два скрипта,т.е. два отдельных файла со скриптами, один считает, другой поворачивает.
Unity3D Developer Ваш лучший помощник при разработке в Unity3D
Сообщение отредактировал SnakeR - Среда, 19 Января 2011, 15:23 |
|
| |
Lord_F | Дата: Среда, 19 Января 2011, 15:24 | Сообщение # 209 |
Любопытный Игродел
Сейчас нет на сайте
| ой, это же два скрипта, извините, просто в одном объекте в двух скриптах одинаковая переменная не глобальна. Она работает только в пределах каждого скрипта Добавлено (19.01.2011, 15:24) --------------------------------------------- а это обязательно на два скрипта?
[quote]Ничто не истина, всё дозволено[/quote]
|
|
| |
SnakeR | Дата: Среда, 19 Января 2011, 15:33 | Сообщение # 210 |
постоянный участник
Сейчас нет на сайте
| Да, на разные объекты потом вешать надо будет. Потому один скрипт это двигатель, второй грубо говоря колесо.Добавлено (19.01.2011, 15:33) --------------------------------------------- Lord_F, ну а если допустим переписать это на C#, как передавать переменные из скрипта в скрипт?
Unity3D Developer Ваш лучший помощник при разработке в Unity3D
|
|
| |
Lord_F | Дата: Среда, 19 Января 2011, 15:36 | Сообщение # 211 |
Любопытный Игродел
Сейчас нет на сайте
| Хм, я даже не знаю как делать глобальные переменные... а в первом скрипте у вас еще что-нибудь есть?
[quote]Ничто не истина, всё дозволено[/quote]
|
|
| |
SnakeR | Дата: Среда, 19 Января 2011, 15:37 | Сообщение # 212 |
постоянный участник
Сейчас нет на сайте
| Нет это весь код.
Unity3D Developer Ваш лучший помощник при разработке в Unity3D
|
|
| |
Lord_F | Дата: Среда, 19 Января 2011, 15:46 | Сообщение # 213 |
Любопытный Игродел
Сейчас нет на сайте
| А зачем вам на два объекта разделять? Можно же: Code public var rpm = 10.1f; public var bloc = 2.0f; public var go : float = rpm * bloc; function Update () {
if (Input.GetKey (KeyCode.LeftArrow))
transform.Rotate(0, 0, go);
if (Input.GetKey (KeyCode.RightArrow))
transform.Rotate(0, 0, -0.1); } Добавлено (19.01.2011, 15:46) --------------------------------------------- а может дело не в переменных, а в transform.Rotate. Может ее надо вызывать для другого объекта? Добавлено (19.01.2011, 15:46) --------------------------------------------- и сделать один скрипт.
[quote]Ничто не истина, всё дозволено[/quote]
|
|
| |
Eye | Дата: Среда, 19 Января 2011, 16:23 | Сообщение # 214 |
заслуженный участник
Сейчас нет на сайте
| Помогите, пожалуйста! Запутался в своем же скрипте. Code var isQuitButton = false; var isQualityButtonFastest = false; var isQualityButtonFantastic = false;
function OnMouseEnter() {
renderer.material.color = Color.red;
}
function OnMouseExit() {
renderer.material.color = Color.white;
}
function OnMouseUp() {
if ( isQuitButton ) {
Application.Quit();
} else {
Application.LoadLevel (1);
} }
if ( isQualityButtonFastest ) {
QualitySettings.currentLevel = QualityLevel.Fastest;
}
if ( isQualityButtonFantastic ) {
QualitySettings.currentLevel = QualityLevel.Fantastic;
} Значит нужно так. При нажатии на коллайдер, в моем случае 3D Text, срабатывает Fastest, если стоит галка isQualityButtonFastest. А при нажатии на другой коллайдер, должен сработать Fantastic, если стоит isQualityButtonFantastic естественно. Если галки не стоят, при нажатии на коллайдер загружается сцена 1. Но это не важно. Как-бе, запутался. Сказали нужно один раз вызвать function OnMouseUp() и все туда пихать. Но не выходит, и испортил код только. Спасайте.
ICQ: 422190728, E-Mail: funnyalien@yandex.ru, Jabber: funnyalien@jabber.ru, Steam: funnyalienvalentine, Twitter: MrFunnyAlien, Skype: happyconsole, ВКонтакте: vk.com/twinemen, Мобильный: +79199212414.
Сообщение отредактировал Eye - Среда, 19 Января 2011, 16:30 |
|
| |
Lord_F | Дата: Среда, 19 Января 2011, 16:29 | Сообщение # 215 |
Любопытный Игродел
Сейчас нет на сайте
| Code var isQuitButton = false; var isQualityButtonFastest = false; var isQualityButtonFantastic = false;
function OnMouseEnter() {
renderer.material.color = Color.red;
}
function OnMouseExit() {
renderer.material.color = Color.white;
}
function OnMouseUp() {
if ( isQuitButton ) {
Application.Quit();
} else if ( isQualityButtonFastest ) {
QualitySettings.currentLevel = QualityLevel.Fastest;
} else if ( isQualityButtonFantastic ) {
QualitySettings.currentLevel = QualityLevel.Fantastic;
} else {
Application.LoadLevel (1);
} мож так
[quote]Ничто не истина, всё дозволено[/quote]
|
|
| |
Eye | Дата: Среда, 19 Января 2011, 16:33 | Сообщение # 216 |
заслуженный участник
Сейчас нет на сайте
| Lord_F, на радость все заработало, огромное Вам спасибо, плюсик! А можете описать проблему? Кстати, писал скрипт, если кому надо Передвижение модельки. Лучше шарик. Code using UnityEngine; using System.Collections;
public class Control : MonoBehaviour {
public float movementSpeed = 6.0f; void Update () { Vector3 movement = (Input.GetAxis("Horizontal") * -Vector3.left * movementSpeed) + (Input.GetAxis("Vertical") * Vector3.forward *movementSpeed); rigidbody.AddForce(movement, ForceMode.Force); } } Требуется наличие коллайдера, ригидбоди с Drag - 0.5 и Interpolate - Interpolate.
ICQ: 422190728, E-Mail: funnyalien@yandex.ru, Jabber: funnyalien@jabber.ru, Steam: funnyalienvalentine, Twitter: MrFunnyAlien, Skype: happyconsole, ВКонтакте: vk.com/twinemen, Мобильный: +79199212414.
Сообщение отредактировал Eye - Среда, 19 Января 2011, 16:38 |
|
| |
Lord_F | Дата: Среда, 19 Января 2011, 16:36 | Сообщение # 217 |
Любопытный Игродел
Сейчас нет на сайте
| Просто после проверки isButtonQuit приложение либо закрывалось, либо переходило в другую сцену. Дальнейшие if не обрабатывались.
[quote]Ничто не истина, всё дозволено[/quote]
|
|
| |
noTformaT | Дата: Среда, 19 Января 2011, 17:18 | Сообщение # 218 |
Ukrainian independent game developer
Сейчас нет на сайте
| Quote (Eye) Кстати, писал скрипт, если кому надо Передвижение модельки. Лучше шарик. ригидбоди есть процессор, для перемещения используется Character Controller
@noTformaT
|
|
| |
SnakeR | Дата: Среда, 19 Января 2011, 17:48 | Сообщение # 219 |
постоянный участник
Сейчас нет на сайте
| И все же, кто нибудь скажет как сделать глобальные переменные, чтобы работали в нескольких скриптах?
Unity3D Developer Ваш лучший помощник при разработке в Unity3D
|
|
| |
AtomKrieg | Дата: Среда, 19 Января 2011, 20:56 | Сообщение # 220 |
частый гость
Сейчас нет на сайте
| Quote (SnakeR) разделил на два скрипта Script_name1 Code static var go; static var rpm =2.0f; static var bloc = 10.1f;
function Start(){ go = rpm * bloc; }
function Update () { go = rpm * bloc; } Sctipt_name2 Code function Update (){ if (Input.GetKey (KeyCode.LeftArrow)) transform.Rotate(0, 0, Script_name1.go);
if (Input.GetKey (KeyCode.RightArrow)) transform.Rotate(0, 0, -0.1); }
Сообщение отредактировал AtomKrieg - Среда, 19 Января 2011, 20:59 |
|
| |
|