Проверка столкновений между коллизиями

Программирование на Юнити.

Проверка столкновений между коллизиями

Сообщение ElmarGod 09 авг 2018, 10:35

В моем проекте есть игрок и кровать. Когда игрок касается кровати, должно показаться текст. Это я сделал, все работает. У меня есть 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 = " ";
}
}

}
ElmarGod
UNец
 
Сообщения: 7
Зарегистрирован: 09 авг 2018, 10:25

Re: Проверка столкновений между коллизиями

Сообщение Xtir 09 авг 2018, 11:31

Ну так конечно, коллайдер же отталкивает вашего игрока, поэтому и получается OnCollisionExit. Используйте триггеры.
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: Проверка столкновений между коллизиями

Сообщение ElmarGod 09 авг 2018, 12:45

Использовав триггеры все сработало, но игрок проходит сквозь кровать.Я знаю что это из-за того что он стал триггером.Но как сделать его и твердым?
Создать еще бокс коллайдер?
ElmarGod
UNец
 
Сообщения: 7
Зарегистрирован: 09 авг 2018, 10:25

Re: Проверка столкновений между коллизиями

Сообщение 1max1 09 авг 2018, 13:36

Создать еще бокс коллайдер?

думаешь это противозаконно? можно в принципе и скриптами определять коллизию, но смысл
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12