Unity2D踩怪功能实现

思路:在player脚底下放一个踩踏判定的位置(创建一个StampPositon的空游戏对象作为player的子对象,获取其transform)

1、定义一个Transform对象用来表示检测的中心点

Transform stampPosition;//踩击点的位置

2、在Awake()中获取transform

transform.Find("子物体名字”)寻找子物体

stampPosition = transform.Find("StampPosition");

3、定义检查是否踩怪的函数

函数逻辑为:通过Physics2D.OverlapCircle方法进行线性检测,检测以stampPosition.position为中心,0.1f为半径的范围内,是否有存在于”Enemy“图层的游戏对象发生碰撞,若存在则返回发生碰撞的Collider2D碰撞体。若没有发生碰撞就return,若发生了碰撞就对Player游戏对象施加一个向上的力并Destory该怪物。

注意:这里需要将Player的速度的y轴速度设置为0,从而保证每次反弹的效果相同。

    private void StampCheck()//检测是否踩怪
    {
        Collider2D enemy=Physics2D.OverlapCircle(stampPosition.position, 0.1f, LayerMask.GetMask("Enemy"));
        if (enemy == null)//没有踩到怪
        {
            return;
        }
        else
        {
            rb.velocity = new Vector2(rb.velocity.x, 0);//保证每次反弹高度一样
            rb.AddForce(new Vector2(0, reboundForce));//踩到怪后施加一个反弹力
            Destroy(enemy.gameObject);//消灭怪物
        }
    }

4、在FixedUpdate中进行检测

private void FixedUpdate()
{
    StampCheck();
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值