Я создал родительский класс, который, как я ожидаю, будет иметь все функции, связанные с тестированием, если GameObject заземлен, в воде, на воздухе и т. Д., Учитывая, что эти функции будут использоваться игроком, а также другими GameObjects. Однако дочерний класс, похоже, не наследует должным образом функции.
Родительский скрипт выглядит следующим образом:
public class CharacterPhysic : MonoBehaviour {
[SerializeField] protected Transform groundPoints;
float grounRadius;
private void Start ()
{
whatIsGround = LayerMask.GetMask("Ground");
groundRadius = 0.01f;
}
protected bool IsGrounded()
{
Collider2D[] colliders = Physics2D.OverlapCircleAll(groundPoints.position, groundRadius, whatIsGround);
if (colliders.Length > 0)
{
return true;
}
else return false;
}
private void FixedUpdate()
{
Debug.Log(IsGrounded());
}
}
А детский сценарий просто:
public class ErrantMove : CharacterPhysic {
private void FixedUpdate()
{
Debug.Log(IsGrounded());
}
}
При добавлении первого скрипта в качестве компонента к Gameobject (после определения grounPoint) Debug.Log(IsGrounded());
возвращает TRUE
Однако при добавлении второго скрипта в качестве компонента к тому же Gameobject (после определения grounPoint и удаления первого скрипта) Debug.Log(IsGrounded());
возвращает FALSE даже в тех же обстоятельствах.
Я ожидаю, что смогу добавить функции движения во второй скрипт, но это зависит от способности проверить, заземлен ли он.