@Ezekiel4
Охотник на пиратов и сборщик монолитов

Как правильно регистрировать столкновения и пересечения с CharacterController-ом?

Есть персонаж с CharacterController, в скрипте вызывается метод Move для движения. Проблема в том, что не регистрируются столкновения и пересечения с обычными коллайдерами.

В документации я нашёл OnControllerColliderHit, который, видимо, надо вешать на сам объект с CharacterController. В итоге я сделал так:
1) В скрипт движения:
private void OnControllerColliderHit(ControllerColliderHit hit) {
		TriggerObject obj = hit.gameObject.GetComponent<TriggerObject>();
		if (obj) obj.StartTrigger(hit.gameObject);
	}

2) Создал класс с единственным методом:
using UnityEngine;
public class TriggerObject : MonoBehaviour {
	public void StartTrigger(GameObject other) { }
}

3) Затем я сделал реализацию этого класса для нажимной плиты:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CollisionTrigger : TriggerObject {
	public void StartTrigger(GameObject other) {
		// code
	}
}


Консоль юнити сразу предупреждает:
Assets\Movement\Scripts\CollisionTrigger.cs(7,14): warning CS0108: 'CollisionTrigger.StartTrigger(GameObject)' hides inherited member 'TriggerObject.StartTrigger(GameObject)'. Use the new keyword if hiding was intended.
Это значит, что мой метод из реализованного класса CollisionTrigger вообще не вызовется.

Подскажите, в чём тут ошибка?
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
@Ezekiel4 Автор вопроса
Охотник на пиратов и сборщик монолитов
Если у кого возникнет такой вопрос - смотрите сообщение OnControllerColliderHit
https://docs.unity3d.com/ScriptReference/Character...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы