这是第一个 Unity 开放项目的repo,是 Unity 和社区合作创建的一个小型开源游戏演示,第一款游戏是一款名为 Chop Chop 的动作冒险游戏。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

42 行
1.2 KiB

using UnityEngine;
using UOP1.StateMachine;
using UOP1.StateMachine.ScriptableObjects;
[CreateAssetMenu(fileName = "IsSliding", menuName = "State Machines/Conditions/Is Sliding")]
public class IsSlidingConditionSO : StateConditionSO<IsSlidingCondition> { }
public class IsSlidingCondition : Condition
{
private CharacterController _characterController;
private Protagonist _protagonistScript;
public override void Awake(StateMachine stateMachine)
{
_characterController = stateMachine.GetComponent<CharacterController>();
_protagonistScript = stateMachine.GetComponent<Protagonist>();
}
protected override bool Statement()
{
//First frame fail check
if (_protagonistScript.lastHit == null)
return false;
float stepHeight = _protagonistScript.lastHit.point.y - _protagonistScript.transform.position.y;
bool isWalkableStep = stepHeight <= _characterController.stepOffset;
float currentSlope = Vector3.Angle(Vector3.up, _protagonistScript.lastHit.normal);
bool isSlopeTooSteep = currentSlope >= _characterController.slopeLimit;
if (!isSlopeTooSteep)
{
//Pendence is within slope limits
return false;
}
else
{
//If the slope is too steep, we prevent sliding if it's within the step limit
return !isWalkableStep;
}
}
}