Показать сообщение отдельно
Старый 18.11.2013, 23:25   #20
Uawi
Оператор ЭВМ
 
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
Ответ: Uawi. Вопрос - ответ

Вот, переписал код, только теперь вообще не поднимается лифт, есть изменения в позиции на доли секунды, а скрипт работает полностью, кроме вот поднятия, точнее работает полностью, только не до конца:
using UnityEngine;
using System.Collections;

public class 
Action MonoBehaviour {

    
// Объект лифта
    
GameObject elevator;
    
// Скорость по Y
    
float yVelocity;

    
// Публичная переменная этажа
    
public int floor 0;
    
// Перменные для контроля передвижения
    
public int updown;
    
// Массив позиций игрока
    
public float[] positions;
    
// Время подъема
    
public float smoothTime;
    
// Перменные флажка для контроля передвижения
    
public bool uppingdowning;

    public 
void Awake () {
        
elevator = (GameObject)GameObject.FindGameObjectWithTag("Лифт");
    }

    public 
void OnGUI () {
        
// Стиль
        
GUI.skin.button.normal.background null;
        
GUI.skin.button.hover.background null;
        
GUI.skin.button.active.background null;

        
// Левая кнопка, отвечающая за подъем вверх
        
if (GUI.Button (new Rect (00Screen.width 4Screen.height), "") && downing == false) {
            
StartCoroutine (Upping ());
        }
        
// Правая кнопка, отвечающая за спуск
        
if (GUI.Button (new Rect (Screen.width Screen.width 40Screen.width 4Screen.height), "") && upping == false) {
            
StartCoroutine (Downing ());
        }
    }

    public 
IEnumerator Upping () {
        
upping true;
        
downing false;

        
floor += up;

        
float newposition Mathf.SmoothDamp(elevator.transform.position.ypositions[floor], ref yVelocitysmoothTime);
        
elevator.transform.position = new Vector3(elevator.transform.position.xnewpositionelevator.transform.position.z);

        yield return new 
WaitForSeconds (smoothTime 3);

        
upping false;
        
downing false;
    }

    public 
IEnumerator Downing () {
        
downing true;
        
upping false;

        
floor -= down;
        
        
float newposition Mathf.SmoothDamp(elevator.transform.position.ypositions[floor], ref yVelocitysmoothTime);
        
elevator.transform.position = new Vector3(elevator.transform.position.xnewpositionelevator.transform.position.z);
        
        yield return new 
WaitForSeconds (smoothTime 3);

        
downing false;
        
upping false;
    }


__________________
Не бойся если ты один...
Бойся если ты ноль...
(Offline)
 
Ответить с цитированием