Скрол

Программирование на Юнити.

Скрол

Сообщение MediaMen 06 май 2009, 10:19

Подскажите как заставить приближаться камеру вращая колесико мышки, или носом ткните на пример какой нибудь.
Аватара пользователя
MediaMen
UNIт
 
Сообщения: 85
Зарегистрирован: 13 апр 2009, 05:49

Re: Скрол

Сообщение Const_47 06 май 2009, 11:34

distance += -(Input.GetAxis("Mouse ScrollWheel"));
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: Скрол

Сообщение MediaMen 06 май 2009, 11:55

Вот спасибо!
Аватара пользователя
MediaMen
UNIт
 
Сообщения: 85
Зарегистрирован: 13 апр 2009, 05:49

Re: Скрол

Сообщение Neodrop 06 май 2009, 15:24

Ух ты! Ловкий синтаксис. Возьму на вооружение, спасибо, Конст. :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Скрол

Сообщение eureka3D 08 июн 2009, 12:27

Здравствуйте, у меня немножко проблема со скролом.
Нужно чтобы камера плавно поднималась и опускалась (скролом) над поверхностью...Камера ни к чему не привязана...Летает используя скрипт - FPflyer. Вот кусок кода:
Код: Выделить всё
function Update() {
   my=moveDirection.y;
   moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
   moveDirection = transform.TransformDirection(moveDirection);
   moveDirection *= speed+transform.position.y/5;
   moveDirection.y=my;
   
if (Input.GetAxis("Mouse ScrollWheel")>0) {
moveDirection += new Vector3 ( 0, 1, 0);
}
   
if (Input.GetAxis("Mouse ScrollWheel")<0) {
moveDirection -= new Vector3 ( 0, 1, 0);
}

var controller : CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
}

Проблема в том, что движение самеры не останавливается после кручения скрола. Что дописать, чтобы крутанул скрол - самера поднялась плавно немного и остановилась? :ympray: Всю ночь просидел, нифига не останавливается...
Сильно не пинайте. Это мой первый пост тут, да и скрипты только начал изучать x_x
Аватара пользователя
eureka3D
UNец
 
Сообщения: 36
Зарегистрирован: 02 июн 2009, 11:39

Re: Скрол

Сообщение Serge 08 июн 2009, 13:00

Выше же все написано. Один из вариантов:

Код: Выделить всё
var distance : Vector3;

function Update () {
   
   distance.z += -(Input.GetAxis("Mouse ScrollWheel"));
   transform.position = distance;
   
}


В вашем случае камера остановится только когда Input.GetAxis("Mouse ScrollWheel") вернет «0».
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: Скрол

Сообщение eureka3D 08 июн 2009, 13:43

Мда...чувствую себя первоклашкой случайно попавший в 10й класс, которому сказали - "Ну разве это сложно? Умнож коэфицент гиперфазнового делителя на тангенс угла и вычислишь зависимость неоднородности"
Ничего не понял...Этот выше указанный код заменить, или вставить, или добавить?
Пробовал вставить в свой код...все дрожит...ничего не двигается...и посылает в нулевые координаты при скроло-кручении. :-s

В вашем случае камера остановится только когда Input.GetAxis("Mouse ScrollWheel") вернет «0»


А как ему вернуть ноль?
if (Input.GetAxis("Mouse ScrollWheel")=0) -ошибку выдает
Аватара пользователя
eureka3D
UNец
 
Сообщения: 36
Зарегистрирован: 02 июн 2009, 11:39

Re: Скрол

Сообщение PavelCrow 08 июн 2009, 15:41

когда в коде написано "+=" , как в примере, и команда нажодиться внутри функции Update
distance.z += -(Input.GetAxis("Mouse ScrollWheel"));
то это значит что к distance.z постоянно прибавляется значение Input.GetAxis("Mouse ScrollWheel"), то есть то значение на которое повернулось колесико мыши. Как только колесико не вращается, оно передает 0.
distance.z - это как раз и подразумевается расстояние от камеры до земли, к примеру.

А вообще да, сначала пройдите уроки, это очень интересно и поучительно.
PavelCrow
UNец
 
Сообщения: 25
Зарегистрирован: 21 май 2009, 10:10

Re: Скрол

Сообщение eureka3D 08 июн 2009, 16:03

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

0. Запуск
1. Камера ПРЫГ в (0,0,0)
2. крутя колесико она дергается как сумашедшая.
3. WSAD также дергает камеру и никуда не двигается.
4. Спать охота...
Аватара пользователя
eureka3D
UNец
 
Сообщения: 36
Зарегистрирован: 02 июн 2009, 11:39

Re: Скрол

Сообщение Serge 08 июн 2009, 16:56

Объясню, что я написал. Создайте новый проект поместите в сцену любой объект, к которому хотите приближать или удалять камеру. Создайте новый скрипт джава и замените его содержимое на код в примере. Прикрепите скрипт к камере. Вы верно подметили изначально камера перемещается в корд. 0, 0, 0. При кручении колесика камера должна плавно удаляться или приближаться, проверено, работает. Если все получится, можно будет подумать, как применить для вашего проекта.
Начните с более простых примеров, почитайте литературу по прогр. На джава или Си, скачайте видеоуроки, ссылки на них есть на форуме, и постепенно все станет понятно.
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: Скрол

Сообщение eureka3D 08 июн 2009, 17:26

У меня нет объекта к которому я хочу приближаться. У меня большая территория (город) по которому летает камера...летает очень плавненько вперед-назад, вправо-влево. Вот...Нужно ее опускать и поднимать также плавно как передвигаюсь. Т.е. не приближать к объекту а опускать вниз-вверх...Хм...а может это одно и тоже...Я уже запутался...бррр...
Хм...а если приближатся, то как объект привязать к камере? :-

Я тут что подумал. А может сделать по-принципу гонок? создать кубик прозрачный...привязать к нему камеру со всякими там смуфами...и двигать кубик...пошел пробовать... :D
Аватара пользователя
eureka3D
UNец
 
Сообщения: 36
Зарегистрирован: 02 июн 2009, 11:39

Re: Скрол

Сообщение Const_47 09 июн 2009, 00:17

повесь на камеру
Код: Выделить всё
using UnityEngine;
using System.Collections;

[AddComponentMenu("Camera-Control/CameraZoom")]

public class CameraZoom : MonoBehaviour {
   
   public Vector3 startPosition;
   public Vector3 startRotation;
   public float ScroollSpeed;
   
   void Start () {
   transform.position = startPosition;
   transform.eulerAngles  = startRotation;
   }
   
   void Update () {
    transform.position += transform.forward * -(Input.GetAxis("Mouse ScrollWheel"))*ScroollSpeed;
   }
}



Кстати, в таком виде скрипт будет работать "почти" :D корректно. Подправишь?
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: Скрол

Сообщение eureka3D 10 июн 2009, 15:54

Уф-ф...получилось #:-s ...Кому интересно:
Создал кубик, посадил на него камеру с помощью SmoothFolow. на кубик повесил скрипт:

Код: Выделить всё
var speed = 4.0;
private var moveDirection = Vector3.zero;

function Update() {
my=moveDirection.y;
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed+transform.position.y/5;
moveDirection.y=my;

transform.position -= transform.up * -(Input.GetAxis("Mouse ScrollWheel"))* 10;

var controller : CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
}

Все как я хотел получилось! всем еще раз спасибо!
Аватара пользователя
eureka3D
UNец
 
Сообщения: 36
Зарегистрирован: 02 июн 2009, 11:39


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8