Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проверка соприкосновения объекта в юнити

Максим Звонков Ученик (159), на голосовании 5 месяцев назад
Дело вот в чём: когда персонаж заходит в область с рычагом, то активируется переменная bool, при помощи которой он может с ним взаимодействовать, но когда персонаж выходит из области, то переменная так и остаётся включённой, как это исправить?

Вот код

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; }, то если персонаж коснётся коллайдера на секунду, а потом сразу выйдет, то переменная будет включённая, а если зайдёт в коллайдер снова, то выключится
}
Голосование за лучший ответ
- Мастер (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;
}
}
}
-Мастер (2218) 6 месяцев назад
попробуй этот код
Максим ЗвонковУченик (159) 6 месяцев назад
Теперь ещё одна проблема: переменная включена всегда, в независимости от прикосновения
Похожие вопросы