-
Мастер
(2218)
6 месяцев назад
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LeverArm : MonoBehaviour
{
public Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
public bool touches = false;
public static bool leverOn = false;
void Update()
{
if (touches && leverOn == false)
{
if (Input.GetKeyDown(KeyCode.E))
{
anim.SetInteger("Activate",1);
leverOn = true;
}
}
else if (touches && leverOn == true)
{
if (Input.GetKeyDown(KeyCode.E))
{
anim.SetInteger("Activate",2);
leverOn = false;
}
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag == "Player")
{
touches = true;
}
}
private void OnTriggerExit2D(Collider2D collision)
{
if (collision.gameObject.tag == "Player")
{
touches = false;
}
}
}
Вот код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LeverArm : MonoBehaviour
{
public Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
public bool touches = false;
public static bool leverOn = false;
void Update()
{
if (touches && leverOn == false)
{
if (Input.GetKeyDown(KeyCode.E))
{
anim.SetInteger("Activate", 1);
leverOn = true;
}
}
else if (touches && leverOn == true)
{
if (Input.GetKeyDown(KeyCode.E))
{
anim.SetInteger("Activate", 2);
leverOn = false;
}
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag == "Player")
{
touches = true;
} // если после этого приписать else { touches = false; }, то если персонаж коснётся коллайдера на секунду, а потом сразу выйдет, то переменная будет включённая, а если зайдёт в коллайдер снова, то выключится
}