基础对象移动新增是否可行区域判断

This commit is contained in:
Lenheart 2024-12-25 11:34:54 +08:00
parent 651902908c
commit db1fd3dfd4
1 changed files with 29 additions and 9 deletions

View File

@ -6,6 +6,9 @@
*/ */
class BaseObject extends Actor { class BaseObject extends Actor {
//所在地图
MySelfMap = null;
//方向 //方向
Direction = 1; Direction = 1;
@ -73,24 +76,41 @@ class BaseObject extends Actor {
Z = vargv[1]; Z = vargv[1];
base.MoveTo(Value, vargv[0] - vargv[1]); base.MoveTo(Value, vargv[0] - vargv[1]);
} }
SetZOrder(Y);
} }
//传入坐标 xyz 的table 或者 单独传 xyz //传入坐标 xyz 的table 或者 单独传 xyz
function MoveBy(Value, ...) { function MoveBy(Value, ...) {
if (vargv.len() == 0) { if (vargv.len() == 0) {
X += Value.x; //如果在地图中 判断是否可行
Y += Value.y; if (MySelfMap) {
local pos = MySelfMap.CheckMovableArea(X, Value.x, Y, Value.y);
X += pos.x;
Y += pos.y;
base.MoveBy(pos.x, pos.y - Value.z);
} else {
X += Value.x;
Y += Value.y;
Value.y = Value.y - Value.z;
base.MoveBy(Value);
}
Z += Value.z; Z += Value.z;
Value.y = Value.y - Value.z;
base.MoveBy(Value);
} else if (vargv.len() == 2) { } else if (vargv.len() == 2) {
X += Value; //如果在地图中 判断是否可行
Y += vargv[0]; if (MySelfMap) {
local pos = MySelfMap.CheckMovableArea(X, Value, Y, vargv[0]);
X += pos.x;
Y += pos.y;
base.MoveBy(pos.x, pos.y - vargv[1]);
} else {
X += Value;
Y += vargv[0];
base.MoveBy(Value, vargv[0] - vargv[1]);
}
Z += vargv[1]; Z += vargv[1];
base.MoveBy(Value, vargv[0] - vargv[1]);
} }
SetZOrder(Y);
MySelfMap.CheckMovableAreaTransmit(this, X, Y);
} }
//设置方向 //设置方向