В моем проекте есть игрок и кровать. Когда игрок касается кровати, должно показаться текст. Это я сделал, все работает. У меня есть 3 функции OnCollisionEnter, OnCollisionStay и OnCollisionExit. Как я сказал все работает, но криво.Дело в том что , когда игрок просто стоит рядом с кроватью должен сработать только OnCollisionStay, так как я стою, но и срабатывает и OnCollisionExit и получается текст пропадает на долю секунду.
Вот скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerMove : MonoBehaviour
{
CharacterController charControl;
public float walkSpeed = 5f;
public GameObject GameObjFurniture;
public Text test;
void Awake()
{
charControl = GetComponent<CharacterController>();
}
void Start()
{
Debug.Log("проверка");
}
void Update()
{
MovePlayer();
}
void MovePlayer()
{
float horiz = Input.GetAxis("Horizontal");
float vert = Input.GetAxis("Vertical");
Vector3 moveDirSide = transform.right * horiz * walkSpeed;
Vector3 forward = transform.forward * vert * walkSpeed;
charControl.SimpleMove(forward);
charControl.SimpleMove(moveDirSide);
}
void OnCollisionEnter(Collision coll)
{
if (coll.gameObject.tag == "furniture")
{
print("Робит");
}
}
void OnCollisionStay(Collision coll)
{
if (coll.gameObject.tag == "furniture")
{
test.text = coll.gameObject.name;
if(Input.GetKeyUp (KeyCode.E))
{
print("Подходит");
}
}
}
void OnCollisionExit(Collision coll)
{
if (coll.gameObject.tag == "furniture")
{
test.text = " ";
}
}
}