Посмотрите, вот у меня есть код, который должен сделать подъем лифта на два этажа выше(это 1 в _positions) и опустить на 1 вниз от текущей позиции, как сделать так?
У меня не работает возврат, постоянно поднимается на второй и опускается на 1, а надо, чтобы можно было с третьего на второй и тд...
using UnityEngine;
using System.Collections;
public class Action : MonoBehaviour {
// Объект лифта
GameObject _lift;
float yVelocity, _newposition;
// Массив позиций
public float[] _positions;
// Время подъема
public float _smoothTime;
// Нужный этаж
public int floor = 3;
// Текущий этаж
public int current = 0;
// Переменные для показа направленности движения
public bool _actionUp = false, _actionDown = false;
public void Awake () {
// Указываем лифт
_lift = (GameObject)GameObject.FindGameObjectWithTag("Лифт");
}
public void Update () {
// Если вверх активно
if (_actionUp) {
// Вызываем корутину
StartCoroutine (_WaitUpFalse());
}
// Если вниз активно
if (_actionDown) {
// Вызываем корутину
StartCoroutine (_WaitDownFalse());
}
}
public void OnGUI () {
if (GUI.Button (new Rect (10, 10, 60, 30), "Вверх") && _actionDown == false) {
// Вверх активируем
_actionUp = true;
}
if (GUI.Button (new Rect (80, 10, 60, 30), "Вниз") && _actionUp == false) {
// Вниз активируем
_actionDown = true;
}
}
// Для отмены действия вверх
public IEnumerator _WaitUpFalse () {
// Указыывем новую позицию
_newposition = Mathf.SmoothDamp(_lift.transform.position.y, _positions[current + 1], ref yVelocity, _smoothTime);
// Перемещаем объект
_lift.transform.position = new Vector3(_lift.transform.position.x, _newposition, 0);
// Ждем
yield return new WaitForSeconds (_smoothTime * 3);
// Отменяем действие
_actionUp = false;
}
// Для отмены действия вниз
public IEnumerator _WaitDownFalse () {
// АНАЛОГИЧНО
_newposition = Mathf.SmoothDamp(_lift.transform.position.y, _positions[current - 1], ref yVelocity, _smoothTime);
_lift.transform.position = new Vector3(_lift.transform.position.x, _newposition, 0);
yield return new WaitForSeconds (_smoothTime * 3);
_actionDown = false;
}
}
То есть нужно оптимизировать так, чтобы я мог сам настраивать нужное мне количество этажей для подъема и спуска, чтобы работало все правильно... Помогите пожалуйста