Вобщем- зделал в 3dMax'е анимацию раздвижных дверей. Когда игрок смотрит на дверь и нажимает клавишу - она открывается, жмет еще раз - закрывается Но, если подождать какое то время до нажатия, то анимация начнется только через этот же промежуток времени (но пройдет нормально)
Вопрос: как убрать эту долбаную задержку?????
Синтаксис:
Используется csharp
public class OpenMainRoom : MonoBehaviour {
public GameObject Player;
public float distance,direction;
public int MyOpen;
// Use this for initialization
void Start ()
{
Player = GameObject.FindGameObjectWithTag("Player");
MyOpen = 0;
}
// Update is called once per frame
void Update ()
{
GetDirectionPlayer();
OpenerMainRoom();
}
void GetDirectionPlayer()
{
//Определить дистанцию до объекта
distance = Vector3.Distance(transform.position,Player.transform.position);
//Определить вектор взгляда игрока
Vector3 dir = (transform.position-Player.transform.position).normalized;
//Вычисляем нахождение цели в поле зрения (0 и -1 сзади + впереди)
direction = Vector3.Dot(dir,Player.transform.forward);
}
void OnGUI()
{
if(distance < 1 && direction > 0.6f)
{
GUI.Box(new Rect((Screen.width/2)-50,20,100,25),"Open Door");
}
}
void OpenerMainRoom()
{
if(distance < 1 && direction > 0.6f)
{
if(Input.GetKeyUp(KeyCode.T))
{
if(MyOpen == 0)
MyOpen = 1;
else
MyOpen = 0;
if(MyOpen == 0)
animation["MainRoom"].speed = -1;
else
animation["MainRoom"].speed = 1*Time.deltaTime;
animation.Play("MainRoom");
}
}
}
}
public GameObject Player;
public float distance,direction;
public int MyOpen;
// Use this for initialization
void Start ()
{
Player = GameObject.FindGameObjectWithTag("Player");
MyOpen = 0;
}
// Update is called once per frame
void Update ()
{
GetDirectionPlayer();
OpenerMainRoom();
}
void GetDirectionPlayer()
{
//Определить дистанцию до объекта
distance = Vector3.Distance(transform.position,Player.transform.position);
//Определить вектор взгляда игрока
Vector3 dir = (transform.position-Player.transform.position).normalized;
//Вычисляем нахождение цели в поле зрения (0 и -1 сзади + впереди)
direction = Vector3.Dot(dir,Player.transform.forward);
}
void OnGUI()
{
if(distance < 1 && direction > 0.6f)
{
GUI.Box(new Rect((Screen.width/2)-50,20,100,25),"Open Door");
}
}
void OpenerMainRoom()
{
if(distance < 1 && direction > 0.6f)
{
if(Input.GetKeyUp(KeyCode.T))
{
if(MyOpen == 0)
MyOpen = 1;
else
MyOpen = 0;
if(MyOpen == 0)
animation["MainRoom"].speed = -1;
else
animation["MainRoom"].speed = 1*Time.deltaTime;
animation.Play("MainRoom");
}
}
}
}
Знаю, что код весьма далек от оптимального, но это самый рабочий вариант из всех моих попыток