小妖精的完美游戏教室——人工智能,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);
}
}
}
小妖精的完美游戏教室——人工智能,A*算法,启发因子篇的更多相关文章
- 小妖精的完美游戏教室——人工智能,A*算法,引言
今天也要直播魔法,求科学的! 欢迎来到小妖精Balous的完美游戏教室! 经过前两周的学习,相信米娜桑已经对状态机有所了解了呢~虽然状态机能够实现几乎所有的人工智能,但是,在实践中,你们有没有发现,自 ...
- 小妖精的完美游戏教室——人工智能,A*算法,导航网络篇
//================================================================//// Copyright (C) 2017 Team Saluk ...
- 小妖精的完美游戏教室——人工智能,A*算法,结点篇
//================================================================//// Copyright (C) 2017 Team Saluk ...
- 小妖精的完美游戏教室——人工智能,A*算法,实现篇
//================================================================//// Copyright (C) 2017 Team Saluk ...
- 小妖精的完美游戏教室——buff系统
作者:小妖精Balous,未经作者允许,任何个人与单位不得将此源代码用于商业化项目 #region buff /// <summary> /// 是否魔法免疫,魔法免疫的生物不会受到除自己 ...
- 小妖精的完美游戏教室——东方PROJECT,同人,墙
//================================================================//// Copyright (C) 东方同人社// All Rig ...
- 小妖精的完美游戏教室——东方PROJECT,同人,符卡系统
//================================================================//// Copyright (C) 东方同人社// All Rig ...
- 小妖精的完美游戏教室——东方PROJECT,同人,th12灵梦A
╮(╯▽╰)╭没办法,小妖精Balous也很讨厌学院化的教育呀,一点意义都没有. 这次就上传东方地灵殿灵梦A逻辑部分的核心代码吧,估计连老师都看不懂.动画部分的代码就不放上来了. //======== ...
- 小妖精的完美游戏教室——东方PROJECT,同人,子机
//================================================================//// Copyright (C)// All Rights Re ...
随机推荐
- 颜色表 及 p em fr
#000000 #2F0000 #600030 #460046 #28004D #272727 #4D0000 #820041 #5E005E #3A006F ...
- 解决Charles https抓包显示<unknown>
用mac电脑开发安卓的都应该知道青花瓷吧~(不知道的都是小菜鸡,邪恶.jpg) Charles类似Windows版的Fiddler(没用过Fiddler的都是小菜鸡中的战斗机,嘲笑.png),基本用法 ...
- Python深入理解yield
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法. 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: def addlist( ...
- git冲突解决的几种办法
文章目录 git stash 栈 放弃本地修改 撤销分支 强行冲掉之前的分支 删除分支 git stash 栈 git stash git pull git stash pop 当pull出现冲突时 ...
- python 全栈开发笔记 4
反射 1.通过字符串的形式导入模块 2.通过字符串的形式,去模块中寻找指定函数并执行 ''' def f1(): return 'F1' def f2(): return 'F2' ''' #假设上面 ...
- Echarts扩展地图文字位置错乱的问题
最近在弄echarts 因为要用到扩展地图,所以在官网下载了相应的json文件 ,引入之后发现文字位置错乱 于是查找网上资料 发现 textFixed : { ...
- StringBuffer&StringBuilder
对字符串修改时,用到StringBuffer&StringBuilder,能够多次修改对象并且不产生新的未使用对象 StringBuilder线程不安全(不能同步访问),速度有优势,多数情况下 ...
- 将字符串类型的出生日期转为int类型的年龄
public static int getAgeByBirthday(String s) { Date birthday = null; SimpleDateFormat format = new S ...
- WebSocket对象的“readyState”属性记录连接过程中的状态值
websocket的两个属性:readyState和bufferedAmount. 根据readyState属性可以判断webSocket的连接状态,该属性的值可以是下面几种: 0 :对应常量CONN ...
- 解决nim db_mysql could not load: libmysql.dll的问题
title: 解决nim db_mysql could not load: libmysql.dll的问题 nim中使用db_mysql 操作数据库的代码看起来很简单: import db_mysql ...