Тряска камеры

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Тряска камеры

Сообщение slavut-17 15 апр 2013, 20:20

Как реализовать что если переменная >25, камера трясеться (немного)
slavut-17
UNITрон
 
Сообщения: 176
Зарегистрирован: 23 сен 2011, 16:37

Re: Тряска камеры

Сообщение KorsaiR 15 апр 2013, 20:50

transform.Rotate((Random.Range(-0.2f,0.2f)),(Random.Range(-0.2f,0.2f)),(Random.Range(-0.2f,0.2f)));

з.ы: то есть по каждой оси каждый кадр смещаем вращение камеры случайным образом от -0.2 до 0.2. у меня таким образом в космосиме сделано .правда надо поиграть с градусами чтоб результата добиться)лучше забить переменную чтоб проще было
Мои игры: Sunrise, Fireground, Spacerift
Sunrise: _www.sunsurv.ru , _https://store.steampowered.com/app/6631 ... _survival/
Fireground: _https://store.steampowered.com/app/1026 ... ND/?beta=0
Spacerift: _https://vk.com/spacerift
Аватара пользователя
KorsaiR
Старожил
 
Сообщения: 797
Зарегистрирован: 09 июл 2012, 12:20
Откуда: Новосибирск
Skype: pwiliya

Re: Тряска камеры

Сообщение slavut-17 15 апр 2013, 20:52

О, привет))) Это я, Слава) я то знаю как написать рандом, я не знаю как написать >25
slavut-17
UNITрон
 
Сообщения: 176
Зарегистрирован: 23 сен 2011, 16:37

Re: Тряска камеры

Сообщение KorsaiR 15 апр 2013, 21:05

if(твоя_переменная>25){


transfirm.rotate...bla bla
}
Аватара пользователя
KorsaiR
Старожил
 
Сообщения: 797
Зарегистрирован: 09 июл 2012, 12:20
Откуда: Новосибирск
Skype: pwiliya

Re: Тряска камеры

Сообщение slavut-17 15 апр 2013, 21:19

Написал вот так
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class tt : MonoBehaviour {
        public shipMotor_v2 perr;
        // Use this for initialization
        void Start () {
        perr = GetComponent("shipMotor_v2") as shipMotor_v2; // переменные из других скриптов...
        }
       
        // Update is called once per frame
        void Update () {
        if (curEnginePowerR >= 25)
                {
                        transform.Rotate((Random.Range(-0.2f,0.2f)),(Random.Range(-0.2f,0.2f)),(Random.Range(-0.2f,0.2f)));// сама встряска
                }
        }
}

Но пишет что нет такой переменной
slavut-17
UNITрон
 
Сообщения: 176
Зарегистрирован: 23 сен 2011, 16:37

Re: Тряска камеры

Сообщение Medveckij 15 апр 2013, 21:33

curEnginePowerR

В каком конкретно месте вы объявили эту переменную? я не вижу.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Тряска камеры

Сообщение slavut-17 15 апр 2013, 21:34

Синтаксис:
Используется csharp
        public Rigidbody L;
        public Rigidbody R;
        //Our speed
       
        public float  mediumSpeed=400F;
        //Rotation speed
        public float  mediumRotSpeed=150F;
        //Rotating koefficient, then greather, then faster
        public float  rotatingspeedKoefficient=1F;
        //Debugging output
        public float  curEnginePowerL;
        //To hide them change 'public' to 'private'
        public float  curEnginePowerR;
        //Is we currently rotating left?
        public bool RotatingLeft;
        //Same as above, but reversed
        public bool RotatingRight;
        //Accelerating speed
        public float step=5F;
        //Decellerating speed
        public float minusStep=10F;
        //Output to GUI
        private GUIText Gtext;
        //Low rotating force
        public float lowRotating=5F;
        //High rotating force
        public float highRotating=150F;
        //Info about current L power
        private float lastL;
        //Same as above, inversed.
        private float lastR;
       
        // Use this for initialization
        void Start () {
        //Initialization of engines
        curEnginePowerL=curEnginePowerR=0F;
                if(L==null||R==null){
                        //Just for lulz
                        Application.Quit();
                }
                //Searching for output
               
                if(Gtext==null){
                        //No output. Bad.
                       
                }
        }
       
        // Update is called once per frame
        void Update () {
                //No keys pressed
                if(!Input.GetKey(KeyCode.W)&&!Input.GetKey(KeyCode.A)&&!Input.GetKey(KeyCode.D)&&!Input.GetKey(KeyCode.S)){
                       
                }
                if(Input.GetKey(KeyCode.Space)){
                        //You can simply add Joystick input, by calling these functions with koefficients
                        Forward(1);
                }
       
                if(Input.GetKey(KeyCode.LeftAlt)){
                        //For lulz: You can add back moving by calling Forward(-1)(for ex.)
                        if(curEnginePowerL>0){
                        curEnginePowerL-=minusStep;
                        }
                        if(curEnginePowerR>0){
                        curEnginePowerR-=minusStep;
                        }
                }
                if(!Input.GetKey(KeyCode.A)){
                        RotatingLeft=false;
                }
                if(!Input.GetKey(KeyCode.D)){
                        RotatingRight=false;
                }
                if(curEnginePowerL<0){
                        //Stabilization
                        curEnginePowerL+=step*3;
                }
                if(curEnginePowerR<0){
                        curEnginePowerR+=step*3;
                }
                if(!Input.GetKey(KeyCode.W)){
                        if(RotatingLeft==true&&curEnginePowerR>mediumRotSpeed){
                                curEnginePowerR-=minusStep;
                        }
                        if(RotatingRight==true&&curEnginePowerL>mediumRotSpeed){
                                curEnginePowerL-=minusStep;
                        }
                }
        }
        void Forward(float Fpower){
                if(curEnginePowerL<mediumSpeed&&RotatingLeft==false){
                        //Simply add power
                        curEnginePowerL+=step*Fpower;
                }
                if(curEnginePowerR<mediumSpeed&&RotatingRight==false){
                        curEnginePowerR+=step*Fpower;
                }
        }
        void Left(float Lpower){
                RotatingLeft=true;
                RotatingRight=false;
                if(curEnginePowerR>highRotating){
                        if(curEnginePowerL<mediumRotSpeed){
                                curEnginePowerL+=step*Lpower;
                        }
                        if(curEnginePowerL>mediumRotSpeed){
                                curEnginePowerL-=minusStep*Lpower;
                        }
                }
                else{
                        if(curEnginePowerL>lowRotating){
                                curEnginePowerL-=minusStep*Lpower;
                        }
                        if(curEnginePowerL<lowRotating){
                                curEnginePowerL+=step*Lpower;
                        }
                        if(curEnginePowerR<highRotating){
                                curEnginePowerR+=step*Lpower;
                        }
                }
        }
        void Right(float Rpower){
                RotatingRight=true;
                RotatingLeft=false;
                                if(curEnginePowerL>highRotating){
                        if(curEnginePowerR<mediumRotSpeed){
                                curEnginePowerR+=step*Rpower;
                        }
                        if(curEnginePowerR>mediumRotSpeed){
                                curEnginePowerR-=minusStep*Rpower;
                        }
                }
                else{
                        if(curEnginePowerR>lowRotating){
                                curEnginePowerR-=minusStep*Rpower;
                        }
                        if(curEnginePowerR<lowRotating){
                                curEnginePowerR+=step*Rpower;
                        }
                        if(curEnginePowerL<highRotating){
                                curEnginePowerL+=step*Rpower;
                        }
                }
                       
                }
       
        void FixedUpdate(){
                //Apply forces
                //We use physics, so we use FixedUpdate, so we call AddForce.
                L.AddForce(transform.forward*curEnginePowerL,ForceMode.Acceleration);
                R.AddForce(transform.forward*curEnginePowerR,ForceMode.Acceleration);
        }
        void OnGUI(){//Draw output
                if(lastL!=curEnginePowerL||lastR!=curEnginePowerR){
                GUI.Label(new Rect(Screen.width / 2,Screen.height / 2, 200, 20), curEnginePowerL.ToString());
                lastL=curEnginePowerL;
                lastR=curEnginePowerR;


                }
        }
}
slavut-17
UNITрон
 
Сообщения: 176
Зарегистрирован: 23 сен 2011, 16:37

Re: Тряска камеры

Сообщение KorsaiR 16 апр 2013, 06:16

дык она у тебя в другом скрипте чтоли?GetComponent в помощь
Мои игры: Sunrise, Fireground, Spacerift
Sunrise: _www.sunsurv.ru , _https://store.steampowered.com/app/6631 ... _survival/
Fireground: _https://store.steampowered.com/app/1026 ... ND/?beta=0
Spacerift: _https://vk.com/spacerift
Аватара пользователя
KorsaiR
Старожил
 
Сообщения: 797
Зарегистрирован: 09 июл 2012, 12:20
Откуда: Новосибирск
Skype: pwiliya

Re: Тряска камеры

Сообщение Nolex 16 апр 2013, 10:50

Загугли "unity3d camera shake", там есть камеры намного интересней. Я себе брал с коротиной какуе-то, она трясеться в боки несколько секунд.
Разработка игр в студии Brinemedia .
Аватара пользователя
Nolex
UNIверсал
 
Сообщения: 483
Зарегистрирован: 17 окт 2010, 12:26
Откуда: Украина
Skype: exlumen
  • Сайт
  • ICQ


Вернуться в Почемучка

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 15