forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Начинаю изучать Unity. Минимальный проект. (http://forum.boolean.name/showthread.php?t=14785)

ARTMAN 25.05.2011 19:54

Начинаю изучать Unity. Минимальный проект.
 
Здраствуйте! Решил заняться Unity.

Для себя решил, что буду писать на C#.

Первый учебный проект будет таким:
Есть пушка.
Пушка поворачивается мышью по двум осям. (право, лево, верх, низ)
Стреляет по нажатию правой кнопки мыши.
Снаряд - сфера. (с встроенной физикой Unity)
Цели - кубы которые переодически появляются на игровом поле.

Хотел бы узнать какими коммандами работать с мышью,
с созданием нового ядра пушки (клонирование префаба)
и придания ему импульса.

Nazgul 25.05.2011 20:03

Ответ: Начинаю изучать Unity. Минимальный проект.
 
1) Поворот мыши по осям:
http://unity3d.com/support/documenta...t.GetAxis.html
Отследить нажатие на правую кнопку мыши:
PHP код:

void Update() { () {
     if (
Input.GetKeyDown (KeyCode.Mouse1)){
           
//действия
     
}


http://unity3d.com/support/documenta...etKeyDown.html
2) Клонирование префаба:
http://unity3d.com/support/documenta...rom=GameObject
3) Приданиe импульса сфере
http://unity3d.com/support/documenta....AddForce.html
К сфере должен быть прикреплен Rigidbody.

В документации язык примеров с JavaScript на C# перевести не забудь:)

ARTMAN 25.05.2011 20:30

Ответ: Начинаю изучать Unity. Минимальный проект.
 
Огромное спасибо, Nazgul.
Всё что надо. Ничего лишнего.

Taugeshtu 25.05.2011 20:38

Ответ: Начинаю изучать Unity. Минимальный проект.
 
Небольшое дополнение:
всё это есть у тебя вместе с поставкой юнити. Лезть в меню Help -> Scripting Reference (как я понял по тексту, понятие об архитектуре Юнити у тебя есть)

Удачи в начинании!

ARTMAN 25.05.2011 22:53

Ответ: Начинаю изучать Unity. Минимальный проект.
 
На меня ругаются...
Assets/example2.cs(10,23): error CS0266: Cannot implicitly convert type `UnityEngine.Object' to `UnityEngine.Rigidbody'. An explicit conversion exists (are you missing a cast?)

хотя всё по примерам из справки:
Код:

public class example : MonoBehaviour {
public Rigidbody projectile;
void Update() {
if (Input.GetButtonDown("Fire1")) {
Rigidbody clone;
 clone = Instantiate(projectile, transform.position, transform.rotation);
 clone.velocity = transform.TransformDirection(Vector3.forward * 10);
 }
 }
}


Taugeshtu 26.05.2011 00:00

Ответ: Начинаю изучать Unity. Минимальный проект.
 
Instantiate всегда возвращает GameObject (который частный случай Object)
Правильно:
Код:

GameObject clone;
+
Код:

clone.rigidbody.velocity
Вообще с gameObject в общем случае удобнее работать, применение конкретно отдельных полей (transform, position, rigidbody) может быть оправданно только в узких задачах когда лень писать многозначительные "крюки" .rigidbody.

Если из Instantiate надо вытащить сразу какую-то компоненту:
Код:

clone = Instantiate(projectile, transform.position, transform.rotation).rigidbody;

ARTMAN 27.05.2011 14:48

Ответ: Начинаю изучать Unity. Минимальный проект.
 
Ещё вопросик.
Как получить поворот пушки, чтобы выпустить снаряд в направлении поворота?

ffinder 27.05.2011 15:27

Ответ: Начинаю изучать Unity. Минимальный проект.
 
поворот получаешь из transform.rotation

Taugeshtu 27.05.2011 16:59

Ответ: Начинаю изучать Unity. Минимальный проект.
 
но конкретно для снаряда проще установить transform.forward снаряда = transform.forward пушки (если пушка конечно не смотрит передним концом вбок О_о от модели и/или иерархии зависит)

Обожаю вектора в юнити)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot