高内聚,低耦合。
河流插件、树生成器插件、体积相关(雾、散射、体积光等)插件:https://www.bilibili.com/video/BV1tF411Y7B1
godot目录设计,看看:https://www.bilibili.com/read/cv18435238
godot dijkstra寻路:https://godotengine.org/asset-library/asset/634
更好的3D路径:https://godotengine.org/asset-library/asset/623
ray_intersects_triangle:向量与三角面求交点
网课第一天:
操作焦点选取(√)
摄像机(√)
多高度蒙版(√)
网课第二天:
历史记录Logger()
直属于Root的带有C#脚本的节点。
拥有数组(Array):CurrentroundHistory和LevelHistory。
拥有静态方法:HistoryAttend(Event:log)和HistoryBackward()
定义一个类:log。
log类的构造函数:public log(type,information)
log对象拥有方法:
- Reverse()翻转记录的操作(比如向左走一步→向右走一步)
- Execute()执行记录中的操作
人物控件(!)
游戏中的棋子被称为"unit",unit是一个带有c#脚本的spatial节点,由控件"component"组合而成。
component只能实现单独的功能。比如,SpriteRender上带有一个SpriteIndex公有变量,控制这个变量就能改变SpriteRender显示出的精灵。
包括:
渲染器(SpriteRender)(!)
变量:
- SpriteIndex
- ImageIndex
- ImageScale
- ImageOffset
- ImageBlend
- ImageAngle
走路器(WalkControl)(!)
方法:
- WalkTo(remanentAP, speed, targetPlace, masksNode)
1. masks中写两个方法:IsPointOnGround(point:Vector3);(只要判断这个位置是否与蒙版重合即可。返回布尔值。)
GenerateGridStructFrom(point:Vector3,sideLength:float); (以一个位置为中心,生成正方形浮点网格(二维数组)。浮点就是进入这个格所需的权重。返回生成的浮点网格。生成网格的步骤:
1.生成空正方形网格,长宽都为sideLength
2.遍历所有mask为k
3.获取i的左下角(ld)和右上角(ru)的世界坐标
4.将ld和ru全部通过最值函数限定在正方形里
5.当ld和ru横纵坐标分别不相等时,遍历ld和ru
6.逐个加入网格(记得ld与ru之间的 i j 减去pos.x+sideLength/2 pos.y+sideLength/2才是网格索引 )
7.返回网格变量
)
2. 而后开始写WalkTo方法。
float availableSteps = remanentAP*speedmasks;
Vector3 startPlace = GetNode<Spatial>("..").Transform.origin;
Grid = Node.GenerateGridStructFrom((startPlace+targetPlace)/2,availableSteps);
新建一个长宽为availableSteps的二维向量数组grid。
新建一个dijkstra图graph。
将grid[(startPlace - targetPlace)/2]设为(1,1)。
向graph中添加一个point。
//双层遍历availableSteps(i,j)开始,重复3*availableSteps次:{
如果grid[i+1][j].x=1且Grid[i][j]=true,那么grid[i][j].x=1,在图上连接该点到grid[i+1][j]的横坐标。
i-1 j ; i j+1 ; i j-1 ; 总计重复四行。
grid[i][j]的纵坐标=在graph中添加点。
结束双层遍历}
攻击器(AttackControl)(!)
方法:
- AttackTo(remanentAP, target)
网课第三天
完成了GenerateGridStructFrom()函数…吗?
还有障碍检测亟待实现, 有障碍物体的地方也应该被设定为0.
网课第四天
网课第六天
可以开始写render了。
显示精灵比意料中的难。
我晕了。我在做什么啊!!
