UnityCS项目

敌人功能

敌人的功能就是当敌人距离玩家10米时朝向玩家移动,当距离玩家5米时攻击玩家,这个还很简单的。

  1. 我们先去获取玩家位置,然后把玩家位置给一个三维向量,在用一个float数去接收,这边重点是Distance()方法,里面的两个位置顺序无所谓一个是自身的位置和玩家的位置。

        playerPos = player.position;
        distance = Vector3.Distance(transform.position, playerPos);
  1. 然后我们就可以去用if判断0米时朝向玩家移动,当距离玩家5米时攻击玩家。这里我用了SimpleMove去写,大家可以用Translate()、position写敌人移动;

if (distance <= StaticGameResources.enemydistance)
        {
            if (distance <= StaticGameResources.enemydistance1)
            {
                transform.LookAt(playerPos);           
            }
            else
            {
                transform.LookAt(playerPos);
                cc.SimpleMove(transform.forward * Time.deltaTime * StaticGameResources.enemyspeed);
            }
        }
  1. 敌人攻击玩家掉血,这边就是用敌人播放一次攻击动画就玩家就掉一次血,这边我就是直接写在切换动画的方法里这边就是用一个数先接收到了攻击动画的时长然后去减等Time.deltaTime,当动画小于等于0时就去扣血,然后在用Invoke去调用AttackTimer()方法使动画初始化然后在回到待机动画;

void Start()
    {
        attackTimer = an[StaticGameResources.attack].length;
} 
void ChangeState(EnemyState ps)
    {
        switch (ps)
        {
            case EnemyState.Idle:
                break;
            case EnemyState.Run:
                Invoke(StaticGameResources.runTimer, runTimer);
                break;
            case EnemyState.Attack:    
                //敌人动画播放一次玩家扣一滴血
                attackTimer -= Time.deltaTime;
                if (attackTimer <= 0)
                {
                    StaticGameResourcesOne.GameOne().playerHP--;
                    Invoke(StaticGameResources.attacTimer, attackTimer);
                }
                break;
            default:
                break;
        }
    }
void AttackTimer()//攻击
    {
        es = EnemyState.Idle;
        attackTimer = an[StaticGameResources.attack].length;

    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值