Unity黑魂学习笔记P42 Back Stab

背刺效果的实现

碰撞器

首先需要设置一下碰撞器用来进行背刺的碰撞检测
在这里插入图片描述
需要一个BackStab Collider,有一个Box Collider和一个BackStabCollider的脚本。

    public class BackStabCollider : MonoBehaviour
    {
        public Transform backStabberStandPoint;


    }

感觉这个脚本有点没必要。
然后Critical RayCast Start Point只有一个Transform,用来表示玩家进行背刺时使用射线检测的起始位置。
Back Stabber Standing Point该对象被背刺触发动画时,敌人所应该在的位置。

逻辑实现

主要就是调整位置调整朝向,播放动画造成伤害。

public void AttemptBackStabOrRiposte()
{
    RaycastHit hit;
    if (Physics.Raycast(inputHandler.criticalAttackRayCastStartPoint.position, transform.TransformDirection(Vector3.forward), out hit, 0.5f, backStabLayer)){
        CharacterManager enemyCharacterManager = hit.transform.gameObject.GetComponent<CharacterManager>();
        if(enemyCharacterManager != null)
        {
            //Check for team id so you cannot back stab friends or yourself
            //pull is into a transform behind the enemy so the backstab looks clean
            //rotate us towards that transform

            //play animation
            //make enemy play animation
            //do damage
            playerManager.transform.position = enemyCharacterManager.backStabCollider.backStabberStandPoint.position;
            Vector3 rotationDirection = playerManager.transform.eulerAngles;
            rotationDirection = hit.transform.position - playerManager.transform.position;
            rotationDirection.y = 0;
            rotationDirection.Normalize();
            Quaternion tr = Quaternion.LookRotation(rotationDirection);
            Quaternion targetRotation = Quaternion.Slerp(playerManager.transform.rotation, tr, 800 * Time.deltaTime);
            playerManager.transform.rotation = targetRotation;

            animatorHandler.PlayTargetAnimation("Back Stab", true);
            enemyCharacterManager.GetComponentInChildren<AnimatorManager>().PlayTargetAnimation("Back Stabbed", true);



        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值