Unity js сильно отличается от js, и если отличается то чем? и есть ли уроки на русском по unity js?
Мне понравились уроки от Digital tutors. Очень удобный формат. Не затянуто, наглядно и видео сопровождается самим материалом который создается в процесее урока (с крипты и тд). Вроде все уроки как раз на US, а не на С#. Правда на английском. Но даже толлком не зная английского, почти все как ни странно понятно.
Господа, довольно таки стыдно за свой вопрос, но тем не менее. Больше месяца читаю туториалы, смотрю уроки и один хрен не могу сделать примитивные вещи.
Вот ситуация. Есть объект в сцене, есть мышка в руках, есть желание сделать так, чтобы объект перемещался вслед за мышкой по осиХ. Я понимаю, что Х-координата объекта это transform.position.x, я так же понимаю, что Х-координата мышки это Input.mousePosition.x. Так же понимаю, что для получения желаемого результата надо координате объекта надо придать значение координаты мышки. Но вот в C# это выразить никак не могу. И так и так изголяюсь, но постоянно только ошибки вылезают. Помогите кто чем может. А то как будто какого-то толчка в мозгу не хватает.. [Shmup/RPG] Fantasy Shmup!
Сообщение отредактировал error111 - Четверг, 15 Марта 2012, 08:54
error111, Нашел на первой ссылке в гугле на javascript, что то подобное.
//Движение обьекта в пространстве.-------------------------------------------------- var moving : Transform; //Указываеться обьект контроля var movSpeed = 0.0; var maxMovSpeed = 10.0; //Максимальная скорость движения var uskorMov = 0.05; //Коифицент ускорения var orderMov = 0.0; var limitToplivo = 1.0; //Топливо (если ноль движение останавливаеться) var sensitivityX = 1.0; //Чуствительность Мышки по X var sensitivityY = 1.0; //Чуствительность Мышки по Y var minimumX = -360.0; var maximumX = 360.0; var minimumY = -60.0; var maximumY = 60.0;
private var rotationX = 0.0; private var rotationY = 0.0;
function Update () { rotationX += Input.GetAxis("Mouse X") * sensitivityX; //мышь - вертикаль rotationY += Input.GetAxis("Mouse Y") * sensitivityY; //мышь - горизонталь MouseRotate(); //применяем поворот мышью var moveDirection = new Vector3(0, 0, 1); //вычисляем новое направление moveDirection = transform.TransformDirection(moveDirection); // находим Forward moveDirection *= movSpeed; //применяем скорость var controller : CharacterController = GetComponent(CharacterController); var flags = controller.Move(moveDirection * Time.deltaTime); //применяем движение //--------------------------------------------------------------------------------- Screen.showCursor = false; //скрываем курсор if (Input.GetKey ("w") && (orderMov == 0 || orderMov == 1) && limitToplivo > 0) { orderMov = 1; if (movSpeed < maxMovSpeed) movSpeed += uskorMov; } else if (orderMov == 1) { if (movSpeed > 0) movSpeed -= uskorMov; if (movSpeed < 0) { movSpeed = 0; orderMov = 0; } } if (Input.GetKey ("s") && (orderMov == 0 || orderMov == 2) && limitToplivo > 0) { orderMov = 2; if (movSpeed > -maxMovSpeed / 5) movSpeed -= uskorMov; } else if (orderMov == 2) { if (movSpeed < 0) movSpeed += uskorMov; if (movSpeed > 0) { movSpeed = 0; orderMov = 0; } } } function MouseRotate () { transform.rotation = Quaternion.AngleAxis (rotationX, Vector3.up); transform.rotation *= Quaternion.AngleAxis (rotationY, Vector3.left); if (rotationX < -360) rotationX += 360; else if (rotationX > 360) rotationX -= 360; if (rotationY < -360) rotationY += 360; else if (rotationY > 360) rotationY -= 360; rotationX = Mathf.Clamp (rotationX, minimumX, maximumX); rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); }
moving.Translate (0, 0, movSpeed);
Его остатки и на хлеб не намазать. Мой тебе совет Пабло - относись к жизни как к веселухе, но непродолжительной. @Эш
Сообщение отредактировал Barbatos - Четверг, 15 Марта 2012, 09:00
error111, Нашел на первой ссылке в гугле на javascript, что то подобное.
На яваСкрипте я и в книжке прочитал как делать. Там все довольно просто. Ставишь равно между выражениями и все работает. А вот в C# компилятор просит трансформ.позишн.х запихнуть в какую-то временную переменную (темпорари вэрибл). Что он имеет ввиду - черт его знает. Как создать переменную которой бы можно было присвоить трансформ.позишн.х тоже не пойму - какого типа делать переменную? [Shmup/RPG] Fantasy Shmup!
На предыдущей странице был вопрос про отличие js от unity js, я работаю с jQuery, когда делаю сайты, и не сказал бы, что они отличаются, мне даже проще разобраться в нем, чем учить шарп.
Да при чем тут сильно они отличаются или нет?..вон в интернетах лежит конвертер с ЮнитиСкрипт на С#...но блин выдает он тоже самое, что и я могу написать:
Code
using UnityEngine; using System.Collections;
public class MouseFollow : MonoBehaviour {
void Update ()
{
transform.position.x = Input.mousePosition.x;
}
}
Но вот только проблема в том, что Юнити мне на все эти умничания выдает: Assets/_Scripts/MouseFollow.cs(7,19): error CS1612: Cannot modify a value type return value of `UnityEngine.Transform.position'. Consider storing the value in a temporary variable.
В общем жду специалистов типа нотФормата. Надеюсь они иногда сюда заглядывают. [Shmup/RPG] Fantasy Shmup!
Сообщение отредактировал error111 - Четверг, 15 Марта 2012, 11:49
Все очень просто. У вектора компоненты x, y, z - это свойства (Properties). У свойств есть геттер и сеттер. Геттер - выдает значение свойства, сеттер его устанавливает. У геттера и сеттера можно отдельно задать уровни доступа. В Юнити геттер публичный, т.е. его можно использовать откуда угодно, а вот сеттер приватный, т.е. его может использовать только сам класс Vector. JS на все эти тонкости наплевать, а вот C# очень придирчив к такому. Поэтому делается так:
Code
transform.position = new Vector3(newX, transform.position.y, transform.position.z);
Чем или какими средствами можно оптимизировать игру в которой на одной локации сотни мобов помима LOD ? Да, я программист, дизайнер, сценарист, Я сам себе издатель и сам себе игрок...
Чем или какими средствами можно оптимизировать игру в которой на одной локации сотни мобов помима LOD ?
Туман поствить, + если игрок их не видит то не воспроизводить анимацию. + как можно меньше юнитевского GUI он сильно снимает фпс (юзайте сторонние либы.) Юзаю Unity3d +C# Мой твиттер Помог - ставь +, Ответил на вопрос - ставь +.
Здравствуйте! Можете, пожалуйста, дать ссылку, если есть, на готовый префаб управления персонажем от первого лица (с приседанием, гравитацией итд). А если нет, то подскажите, как реализовать приседания с помощью стандартного FirstPersonController-а. QLines v1.3 Forest Owl
Как думаете могут ли разработчики юньки уменьшить ограничения для бесплатной версии? Навроде воды или теней собственных ? Да, я программист, дизайнер, сценарист, Я сам себе издатель и сам себе игрок...
Как думаете могут ли разработчики юньки уменьшить ограничения для бесплатной версии? Навроде воды или теней собственных ?
Да нет конечно. Разработчикам надо продавать свой продукт. И как раз наличие теней в платной версии и отсутствие их в бесплатной заставляют людей, пришедших в юнити всерьез и надолго, раскошеливаться на 1500 юсд. По крайней мере как один из основных факторов. [Shmup/RPG] Fantasy Shmup!
_LeVoID_, Эхехех... Често говоря, что скрипт приседания - мой первый скрипт))) Там ток по смещению камеры. Уменьшать самого перса пока лень...
Code
using UnityEngine; using System.Collections;
public class SidDown : MonoBehaviour { public Camera camere; public float camPosXyy = -0.1950684f; public float camPosYyy = 2.217274f; public float camPosZyy = 0.3647461f;
public float camPosXym = -0.1950684f; public float camPosYym = 0.687458f; public float camPosZym = 0.3647461f;
Vector3 yy; Vector3 ym;
// Use this for initialization void Start () { yy.y = camPosYyy; yy.x = camPosXyy; yy.z = camPosZyy; ym.y = camPosYym; } // Update is called once per frame void Update () { if(Input.GetKeyDown(KeyCode.C)) { camere.transform.localPosition = ym; } if(Input.GetKeyUp(KeyCode.C)) { camere.transform.localPosition = yy; } } }
Здравствуйте! Можете, пожалуйста, дать ссылку, если есть, на готовый префаб управления персонажем от первого лица (с приседанием, гравитацией итд). А если нет, то подскажите, как реализовать приседания с помощью стандартного FirstPersonController-а.
Не могу работать с джойстиком из C#. Добавляю Character Controller и всёравно не работает. Юзаю Unity3d +C# Мой твиттер Помог - ставь +, Ответил на вопрос - ставь +.