日志2025.2.13

日志2025.2.13

1.增加了敌人的随机武器
    //设置敌人的随机武器
    private void SetUpRandomWeapon()
    {
        //先全设置为false
        foreach (EnemyWeaponModel weaponModel in weaponModels)
        {
            weaponModel.gameObject.SetActive(false);
        }

        //根据武器类型而修正过后的武器列表
        List<EnemyWeaponModel> filteredWeaponModels = new List<EnemyWeaponModel>();
        //将类型相同的武器添加到武器列表
        foreach (EnemyWeaponModel weaponModel in weaponModels)
        {
            if (weaponModel.weaponType_Melee == weaponType)
            {
                filteredWeaponModels.Add(weaponModel);
            }
        }

        int random = Random.Range(0, filteredWeaponModels.Count);
        currentWeaponModel = filteredWeaponModels[random].gameObject;
        currentWeaponModel.SetActive(true);

        OverrideAnimatorController();

    }

    public void ActiveWeaponModel(bool active)
    {
        currentWeaponModel.SetActive(active);
    }


    public void SetUpEnemyWeaponType(EnemyWeaponType_Melee type = EnemyWeaponType_Melee.OneHand)
    {
        weaponType = type;
    }


    //初始化一些特殊的敌人
    private void InitializeSpeciality() 
    { 
        //设置武器类型
        if(meleeType == Melee_EnemyType.AxeThrow)
        {
            visuals.SetUpEnemyWeaponType(EnemyWeaponType_Melee.Throw);
        }
        else if(meleeType == Melee_EnemyType.Dodge)
        {
            visuals.SetUpEnemyWeaponType(EnemyWeaponType_Melee.Unarmed);
        }
        else
        {
            visuals.SetUpEnemyWeaponType();
        }

        if(meleeType == Melee_EnemyType.Shield)
        {
            animator.SetFloat("ChaseIndex", 1);
            shieldTransform.gameObject.SetActive(true);
        }
    }


2.添加了敌人的重载动画机
    //更换对应的动画控制器
    private void OverrideAnimatorController()
    {
        AnimatorOverrideController overrideController = currentWeaponModel.GetComponent<EnemyWeaponModel>().overrideController;

        if (overrideController != null)
        {
            GetComponentInChildren<Animator>().runtimeAnimatorController = overrideController;
        }
    }


3.增加了敌人的武器拖尾效果
    public void ActiveWeaponTrail(bool active)
    {
        currentWeaponModel.GetComponent<EnemyWeaponModel>().ActiveTrailEffect(active);
    }


public class EnemyWeaponModel : MonoBehaviour
{
    public EnemyWeaponType_Melee weaponType_Melee;
    public AnimatorOverrideController overrideController;
    public GameObject[] weaponTrail;
    public Enemy_Melee_WeaponData weaponData;

    private void Awake()
    {
        ActiveTrailEffect(false);
    }


    public void ActiveTrailEffect(bool active)
    {
        foreach (GameObject weapon in weaponTrail)
        {
            weapon.SetActive(active);
        }
    }
}


4.增加了敌人武器数据的存储结构
[CreateAssetMenu(fileName = "Enemy_Melee_WeaponData", menuName = "Scriptable Objects/Enemy_Melee_WeaponData")]
public class Enemy_Melee_WeaponData : ScriptableObject
{
    public List<Melee_AttackData> attackData;
}

    //设置当前武器的攻击数据
    private void SetUpAttackData()
    {
        EnemyWeaponModel currentWeapon = visuals.currentWeaponModel.GetComponent<EnemyWeaponModel>();

        if (currentWeapon.weaponData != null)
        {
            attackList = new List<Melee_AttackData>(currentWeapon.weaponData.attackData);
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值