坚持尝试在回合制战略游戏中制作AI

时间:2013-12-12 18:46:34

标签: c# unity3d artificial-intelligence

我已经可以通过寻路制作动作网格并避免玩家遇到障碍物。现在我想基于运动网格和可用的动作点(就像玩家一样)让AI移动自己,但我不知道该怎么做。现在,我只能让角色移动到该位置(但它不遵循寻路,这个角色假设是AI)。我被困在试图解决这个问题,但不能。你能帮助我吗?感谢。

这是我到目前为止所获得的代码(它使得假设AI移动到该位置的角色,但它不遵循寻路):

using UnityEngine;
using System.Collections;

public class AIPlayer : Player
{
    void Awake()
    {
        moveDestination = transform.position;
    }

    // Use this for initialization
    void Start()
    {
        ColorChanger();
    }

    // Update is called once per frame
    void Update()
    {

    }


    public override void TurnUpdate()
    {
        if (GameManager.instance.currentPlayerIndex == 5)
        {
            if (Vector3.Distance(moveDestination, transform.position) > 0.1f)
            {
                transform.position += (moveDestination - transform.position).normalized * moveSpeed * Time.deltaTime;

                if (Vector3.Distance(moveDestination, transform.position) <= 0.1f)
                {
                    transform.position = moveDestination;
                    actionPoints--;
                }
            }

            else
            {
                moveDestination = new Vector3(2 - Mathf.Floor(GameManager.instance.mapSize / 2), 1.5f, -2 + Mathf.Floor(GameManager.instance.mapSize / 2));
                GameManager.instance.NextTurn();
            }
        }

        base.TurnUpdate();
    }

    public override void TurnOnGUI()
    {

    }

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

以下是该游戏的链接视频:

http://www.youtube.com/watch?v=eo7DzbBPQBs&feature=youtu.be

1 个答案:

答案 0 :(得分:0)

那里没有寻路的代码。这只是一个过于复杂的问题。同样,直接移动到该位置将导致严重的头痛,避免图形障碍。

您最好的选择是实施基于网格的导航网格并使用类似A *搜索的内容来查找路径。移动将限于相邻的方块,因此不会发生图形障碍避免。

看看this tutorial。除了动画玩家动作和目标位置的游戏逻辑外,它还会为您提供所需的一切。