Есть персонаж с 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 вообще не вызовется.
Подскажите, в чём тут ошибка?