小妖精的完美游戏教室——人工智能,A*算法,启发因子篇

//================================================================
//
// Copyright (C) 2017 Team Saluka
// All Rights Reserved
//
// Author:小妖精Balous

//

//Summary:这里一共列出3种启发因子,启发因子决定搜索精确度与CPU开销
//
//================================================================

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

namespace Saruka
{
/// <summary>
/// 启发因子
/// </summary>
public abstract class Heuristics
{
public abstract float GetHeuristics(NavNode startNode, NavNode targetNode);
}

/// <summary>
/// 曼哈顿距离
/// </summary>
public class ManhattanDistance : Heuristics
{
public override float GetHeuristics(NavNode startNode, NavNode targetNode)
{
return Mathf.Abs(startNode.gridX - targetNode.gridX) + Mathf.Abs(startNode.gridY - targetNode.gridY);
}
}

/// <summary>
/// 欧几里得距离
/// </summary>
public class EuclideanDistance : Heuristics
{
public override float GetHeuristics(NavNode startNode, NavNode targetNode)
{
int disX = startNode.gridX - targetNode.gridX;
int disY = startNode.gridY - targetNode.gridY;
return Mathf.Sqrt(disX * disX + disY * disY);
}
}

/// <summary>
/// 八方向距离
/// </summary>
public class EightDirectionsDistance : Heuristics
{
public override float GetHeuristics(NavNode startNode, NavNode targetNode)
{
int disX = Mathf.Abs(startNode.gridX - targetNode.gridX);
int disY = Mathf.Abs(startNode.gridY - targetNode.gridY);
if (disX > disY) return 1.414213562f * disY + (disX - disY);
return 1.414213562f * disX + (disY - disX);
}
}
}

时间: 2024-12-16 12:19:59

小妖精的完美游戏教室——人工智能,A*算法,启发因子篇的相关文章

小妖精的完美游戏教室——人工智能,状态机理论篇

今天也要直播魔法,求科学的! 欢迎来到小妖精Balous的完美游戏教室! 每一款好玩的游戏里面肯定有很多人工智能,例如一些帮助玩家的NPC,一些被玩家调教小怪物,更有输掉后会卖萌的Boss(小妖精真的没有玩过东方project,真的没有,小妖精甚至连这个游戏都没听说过!).那么,米娜桑想不想知道这些人工智能是如何实现的呢?那就跟着小妖精的步伐看下去吧~~但是小妖精现在的实力不是很强耶,目前还达不到妖精姐的水平,所以小妖精也只是教大家一些简单的基础.不要见怪哟. 人工智能简单来讲,是由状态跟转移条

小妖精的完美游戏教室——人工智能,A*算法,导航网络篇

//================================================================//// Copyright (C) 2017 Team Saluka// All Rights Reserved//// Author:小妖精Balous////================================================================ using System.Collections;using System

小妖精的完美游戏教室——人工智能,A*算法,实现篇

//================================================================//// Copyright (C) 2017 Team Saluka// All Rights Reserved//// Author:小妖精Balous////================================================================ using System.Collections;using System

小妖精的完美游戏教室——人工智能,A*算法,结点篇

//================================================================//// Copyright (C) 2017 Team Saluka// All Rights Reserved//// Author小妖精Balous////================================================================ using System.Collections;using System.

小妖精的完美游戏教室——魔方塔防01,路径

今天也要直播魔法,求科学的! 欢迎来到小妖精Balous的完美游戏教室! 现在呢,小妖精要教大家如何制作一个游戏,是不是很激动呢?小妖精现在也是很兴奋呀.废话不多说,我们直接进入正题.作为一个游戏,必须得有策划案,所以呢,小妖精就先简单叙述下这个游戏的策划吧~ 这是个传统的塔防游戏,玩家通过建造防御塔,升级防御塔来抵御怪物的进攻.咦?这个策划看上去很low啊.但是要做一个大型游戏,得先有好的技术对不对?我们就拿这个很low的游戏入手吧.因为小妖精是美术白痴啦,所以这个游戏的防御塔都是立方体,怪物

小妖精的完美游戏教室——东方PROJECT,同人,墙

//================================================================//// Copyright (C) 东方同人社// All Rights Reserved//// Author:小妖精Balous// //Summary:墙是很重要的,除非你想让玩家穿模.因为墙只有一个,所以就用静态的Singleton实现了 ////=======================================================

小妖精的完美游戏教室——东方PROJECT,同人,th12灵梦A

╮(╯▽╰)╭没办法,小妖精Balous也很讨厌学院化的教育呀,一点意义都没有. 这次就上传东方地灵殿灵梦A逻辑部分的核心代码吧,估计连老师都看不懂.动画部分的代码就不放上来了. //================================================================//// Copyright (C)// All Rights Reserved//// Author:小妖精Balous////=============================

小妖精的完美游戏教室——东方PROJECT,同人,符卡系统

//================================================================//// Copyright (C) 东方同人社// All Rights Reserved//// Author:小妖精Balous // //Summary:这次是符卡系统,这个系统能完成绝大多数符卡,算是比较通用的了////================================================================ usin

小妖精的完美游戏教室——技能系统

//================================================================//// Copyright (C) 2017 Team Saluka// All Rights Reserved//// Author:小妖精Balous////================================================================ using System.Collections;using System