黑魂复刻游戏的玩家控制器(降落、落地检测)——Unity随手记(2021.3.30)

本文详细介绍了在Unity中实现玩家控制器的落地检测与动画的优化过程,包括加入降落动画,落地检测器的实现,动画状态机的调整,以及针对不同情况的优化策略,如失足掉落的处理和防止动画不流畅的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天实现的内容:

加入降落动画

降落发生在跳跃之后,所以降落动画要紧接着跳跃动画播放,动画机如下。
在这里插入图片描述
这两条Transition都has exit time,并且jump到fall的优先级高于jump到ground,因为目前为止这两个转换都没有条件。
在这里插入图片描述
在图示位置调整优先级。

落地检测的实现及相关动画运用

要实现落地检测,需要使用Physics.Overlap里的东西,使用Physics.Overlap可以找到某个形状范围内有重合的所有碰撞体。比如我们要用到的Physics.OverlapCapsule就是在一个给定的胶囊体内得到所有与胶囊体有重合的特定layer的碰撞体,Overlap只能得到有哪些碰撞体重合,而不知道其它信息(先后,远近等等)。
在这里插入图片描述
我们新建落地检测器脚本OnGroundSensor,挂载到PlayerController游戏对象的子物体sensor下,sensor对象将专门由于各种检测器的挂载。
在这里插入图片描述
OnGroundSensor代码如下。通过SendMessage来告诉PlayerController当前是否正在地面。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// 落地检测器
public class OnGroundSensor : MonoBehaviour
{
   
   
    // 用于引用PlayerController游戏对象上的CapsuleCollider
    public CapsuleCollider capCol;

    // 用于绘制胶囊检测器的两个点
    private Vector3 point1;
    private Vector3 point2;
    // 用于绘制胶囊检测器的半径
    private float radius;


    void Awake()
    {
   
   
        radius = capCol.radius;
    }

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值