当前位置: 首页 > article >正文

日志2025.2.11

日志2025.2.11

1.增加了敌人滚动这个特殊技能

    //具有翻滚技能的敌人实现翻滚
    public void ActivateDodgeRoll()
    {
        if(meleeType != EnemyType_Melee.Dodge)
        {
            return;
        }

        if(stateMachine.currentState != chaseState)
        {
            return;
        }
       
        animator.SetTrigger("DodgeRoll");
    }

2.增加了敌人丢斧头这个特殊技能

public class AbilityState_Melee : EnemyState
{
    private Enemy_Melee enemy;

    public AbilityState_Melee(Enemy enemyBase, EnemyStateMachine stateMachine, string animBoolName) : base(enemyBase, stateMachine, animBoolName)
    {
        enemy = (Enemy_Melee)enemyBase;
    }

    public override void Enter()
    {
        base.Enter();
        enemy.PullWeapon();
        enemy.SetMoveDestination(2f);
    }

    public override void Exit()
    {
        base.Exit();
    }

    public override void Update()
    {
        base.Update();

        if (moveTrigger)
        {
            enemy.InAnimationMove(0.8f);
        }

        if (triggerCalled)
        {
            stateMachine.ChangeState(enemy.recoveryState);
        }

    }

    public override void AbilityTrigger()
    {
        base.AbilityTrigger();

        GameObject newAxe = ObjectPool.instance.GetObject(enemy.axePrefab);
        newAxe.transform.position = enemy.holdWeapon.transform.position;

        //设置斧头发射方向
        Vector3 dir = enemy.playerTransform.position - enemy.transform.position;
        dir.Normalize();
        newAxe.GetComponent<EnemyAxe>().SetUpAxe(dir);

    }

}

public class EnemyAxe : MonoBehaviour
{
    private Rigidbody rb;
    [SerializeField] private GameObject impactFxPrefab;

    public float flySpeed;
    public float rotateSpeed;

    private void Awake()
    {
        rb = GetComponent<Rigidbody>();
    }


    public void SetUpAxe(Vector3 dir)
    {
        rb.linearVelocity = dir * flySpeed;
        transform.forward = dir;
    }

    private void Update()
    {
        transform.Rotate(Vector3.right * rotateSpeed);
    }

    private void OnTriggerEnter(Collider other)
    {
        GameObject newFx = ObjectPool.instance.GetObject(impactFxPrefab);
        newFx.transform.position = transform.position;

        ObjectPool.instance.ReturnObject(gameObject);
        ObjectPool.instance.ReturnObject(newFx, 0.98f);
    }

}
 


3.整理了近战敌人代码


http://www.kler.cn/a/542133.html

相关文章:

  • 11vue3实战-----封装缓存工具
  • JAVA-枚举的使用
  • mosquitto配置桥接
  • C++ Primer 类型转换
  • 如何将网站提交百度收录完整SEO教程
  • RocketMQ、RabbitMQ、Kafka 的底层实现、功能异同、应用场景及技术选型分析
  • 访问Elasticsearch服务 curl ip 端口可以 浏览器不可以
  • RagFlow + Docker Desktop + Ollama + DeepSeek-R1本地部署自己的本地AI大模型工具
  • 个人第一个git+cmake构建的c++项目
  • 技术实战|ELF 2学习板本地部署DeepSeek-R1大模型的完整指南(一)
  • 模块的加载机制
  • Unity使用iTextSharp导出PDF-01准备dll
  • 网络编程(TCP/UDP)
  • C++ `Lambda` 函数完整指南
  • 点云配准网络
  • C#中System.Windows.Forms.Application.DoEvents()什么意思?
  • Leetcode1728:猫和老鼠 II
  • 循环依赖是什么?
  • git 子模块管理(一个仓库中有多个子仓库)
  • 02.10 TCP之文件传输
  • 北斗导航 | 基于多假设解分离(MHSS)模型的双星故障监测算法(MATLAB代码实现——ARAIM)
  • SQLServer的创建,表创建,主键,约束,模糊查询
  • 无人机图像拼接数据在GIS中的处理与分析、可视化与制图;无人机航拍;无人机生态环境监测、图像处理与GIS数据分析
  • YOLOv11融合[AAAI2025]的TBSN中的DilatedMDTA模块
  • PTC Windchill介绍
  • PDF另存为图片的一个方法