projectEli/Assets/KinematicCharacterController/Walkthrough/1- Player Camera Character Setup/Scripts/MyCharacterController.cs

70 lines
2.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using KinematicCharacterController;
using System;
namespace KinematicCharacterController.Walkthrough.PlayerCameraCharacterSetup
{
public class MyCharacterController : MonoBehaviour, ICharacterController
{
public KinematicCharacterMotor Motor;
private void Start()
{
// Assign to motor
Motor.CharacterController = this;
}
public void BeforeCharacterUpdate(float deltaTime)
{
// This is called before the motor does anything
}
public void UpdateRotation(ref Quaternion currentRotation, float deltaTime)
{
// This is called when the motor wants to know what its rotation should be right now
}
public void UpdateVelocity(ref Vector3 currentVelocity, float deltaTime)
{
// This is called when the motor wants to know what its velocity should be right now
}
public void AfterCharacterUpdate(float deltaTime)
{
// This is called after the motor has finished everything in its update
}
public bool IsColliderValidForCollisions(Collider coll)
{
// This is called after when the motor wants to know if the collider can be collided with (or if we just go through it)
return true;
}
public void OnGroundHit(Collider hitCollider, Vector3 hitNormal, Vector3 hitPoint, ref HitStabilityReport hitStabilityReport)
{
// This is called when the motor's ground probing detects a ground hit
}
public void OnMovementHit(Collider hitCollider, Vector3 hitNormal, Vector3 hitPoint, ref HitStabilityReport hitStabilityReport)
{
// This is called when the motor's movement logic detects a hit
}
public void ProcessHitStabilityReport(Collider hitCollider, Vector3 hitNormal, Vector3 hitPoint, Vector3 atCharacterPosition, Quaternion atCharacterRotation, ref HitStabilityReport hitStabilityReport)
{
// This is called after every hit detected in the motor, to give you a chance to modify the HitStabilityReport any way you want
}
public void PostGroundingUpdate(float deltaTime)
{
// This is called after the motor has finished its ground probing, but before PhysicsMover/Velocity/etc.... handling
}
public void OnDiscreteCollisionDetected(Collider hitCollider)
{
// This is called by the motor when it is detecting a collision that did not result from a "movement hit".
}
}
}