51 lines
2.1 KiB
C#
51 lines
2.1 KiB
C#
using Unity.Entities;
|
|
using Unity.Mathematics;
|
|
using Unity.Physics.Authoring;
|
|
using UnityEngine;
|
|
using Unity.CharacterController;
|
|
using Unity.Physics;
|
|
using UnityEngine.Serialization;
|
|
|
|
[DisallowMultipleComponent]
|
|
public class ThirdPersonCharacterAuthoring : MonoBehaviour
|
|
{
|
|
public AuthoringKinematicCharacterProperties CharacterProperties = AuthoringKinematicCharacterProperties.GetDefault();
|
|
|
|
public float RotationSharpness = 25f;
|
|
public float GroundMaxSpeed = 10f;
|
|
public float GroundedMovementSharpness = 15f;
|
|
public float AirAcceleration = 50f;
|
|
public float AirMaxSpeed = 10f;
|
|
public float AirDrag = 0f;
|
|
public float JumpSpeed = 10f;
|
|
public float3 Gravity = math.up() * -30f;
|
|
public bool PreventAirAccelerationAgainstUngroundedHits = true;
|
|
public BasicStepAndSlopeHandlingParameters StepAndSlopeHandling = BasicStepAndSlopeHandlingParameters.GetDefault();
|
|
|
|
public class Baker : Baker<ThirdPersonCharacterAuthoring>
|
|
{
|
|
public override void Bake(ThirdPersonCharacterAuthoring authoring)
|
|
{
|
|
KinematicCharacterUtilities.BakeCharacter(this, authoring.gameObject, authoring.CharacterProperties);
|
|
|
|
Entity entity = GetEntity(TransformUsageFlags.Dynamic | TransformUsageFlags.WorldSpace);
|
|
|
|
AddComponent(entity, new ThirdPersonCharacterComponent
|
|
{
|
|
RotationSharpness = authoring.RotationSharpness,
|
|
GroundMaxSpeed = authoring.GroundMaxSpeed,
|
|
GroundedMovementSharpness = authoring.GroundedMovementSharpness,
|
|
AirAcceleration = authoring.AirAcceleration,
|
|
AirMaxSpeed = authoring.AirMaxSpeed,
|
|
AirDrag = authoring.AirDrag,
|
|
JumpSpeed = authoring.JumpSpeed,
|
|
Gravity = authoring.Gravity,
|
|
PreventAirAccelerationAgainstUngroundedHits = authoring.PreventAirAccelerationAgainstUngroundedHits,
|
|
StepAndSlopeHandling = authoring.StepAndSlopeHandling,
|
|
});
|
|
AddComponent(entity, new ThirdPersonCharacterControl());
|
|
}
|
|
}
|
|
|
|
}
|