横版游戏简单敌人AI设计-unity3d之2d游戏开发第二十课

在Unity3D中开发横版游戏时,我们可以使用C#编写一些敌人的AI行为。以下是一个简单的代码,演示了如何实现敌人的自动巡逻和攻击行为。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyAI : MonoBehaviour
{
    // 巡逻点的集合
    public Transform[] patrolPoints;
    // 攻击目标的对象
    public GameObject target;
    // 移动的速度
    public float speed = 2f;
    // 攻击的冷却时间
    public float attackCooldown = 1f;

    private List<Transform> _patrolQueue = new List<Transform>();
    private float _nextAttack = 0f;

    private void Start()
    {
        // 将所有的巡逻点加入队列
        for (int i = 0; i < patrolPoints.Length; i++)
        {
            _patrolQueue.Add(patrolPoints[i]);
        }
    }

    private void Update()
    {
        // 如果当前没有在冷却时间内,可以进行攻击
        if (Time.time < _nextAttack)
        {
            // 获取当前位置和目标的位置
            Vector3 myPos = transform.position;
            Vector3 targetPos = target.transform.position;

            // 计算目标的方向,并朝向目标移动
            Vector3 direction = (targetPos - myPos).normalized;
            transform.position += direction * speed * Time.deltaTime;
        }
        else
        {
            // 如果没有到达目标,继续巡逻
            if (transform.position != patrolPoints[_patrolQueue.Count % patrolPoints.Length].position)
            {
                // 计算当前位置到下一个巡逻点的方向,并朝向该方向移动
                Vector3 direction = (patrolPoints[_patrolQueue.Count % patrolPoints.Length].position - transform.position).normalized;
                transform.position += direction * speed * Time.deltaTime;
            }
            else
            {
                // 如果到达了目标,将下一个目标加入到队列中,并重置攻击冷却时间
                _patrolQueue.Add(_patrolQueue[_patrolQueue.Count % _patrolQueue.Count]);
                _nextAttack = Time.time + attackCooldown;
            }
        }
    }
}

这段代码中,EnemyAI类有两个公共的成员变量:patrolPoints和target。patrolPoints是一个Transform数组,定义了敌人在巡逻时的路径点;target是一个GameObject,定义了敌人攻击的目标。在Start方法中,我们将所有的巡逻点加入到队列中。在Update方法中,我们首先判断当前是否可以攻击,如果可以攻击,就计算出目标的位置,并朝向目标移动;如果不可以攻击,我们就计算出下一个巡逻点的位置,并朝向该方向移动。当到达下一个巡逻点时,我们将下一个巡逻点加入到队列中,并重置攻击冷却时间。这样就可以实现敌人的自动巡逻和攻击行为。

横版游戏简单敌人AI设计-unity3d之2d游戏开发视频教程入门
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享