Вторник, 19 Ноября 2024, 02:34

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по 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)
    ---------------------------------------------
    Все нашел в мануале, мануал по скриптам надо переводить, на англ не всегда понятно biggrin
    вот если кому интересно

    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, на радость все заработало, огромное Вам спасибо, плюсик!

    А можете описать проблему?


    Кстати, писал скрипт, если кому надо smile Передвижение модельки. Лучше шарик.

    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
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг