From db1fd3dfd44b98f764c49102e2b8ea34a288fb4a Mon Sep 17 00:00:00 2001 From: Lenheart <947330670@qq.com> Date: Wed, 25 Dec 2024 11:34:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E5=AF=B9=E8=B1=A1=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E6=96=B0=E5=A2=9E=E6=98=AF=E5=90=A6=E5=8F=AF=E8=A1=8C?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sqr/User/Object/Object/BaseObject.nut | 38 ++++++++++++++++++++------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/sqr/User/Object/Object/BaseObject.nut b/sqr/User/Object/Object/BaseObject.nut index 5c7e53c..2ffc658 100644 --- a/sqr/User/Object/Object/BaseObject.nut +++ b/sqr/User/Object/Object/BaseObject.nut @@ -6,6 +6,9 @@ */ class BaseObject extends Actor { + //所在地图 + MySelfMap = null; + //方向 Direction = 1; @@ -73,24 +76,41 @@ class BaseObject extends Actor { Z = vargv[1]; base.MoveTo(Value, vargv[0] - vargv[1]); } - - + SetZOrder(Y); } //传入坐标 xyz 的table 或者 单独传 xyz function MoveBy(Value, ...) { 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; - Value.y = Value.y - Value.z; - base.MoveBy(Value); } 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]; - base.MoveBy(Value, vargv[0] - vargv[1]); } + SetZOrder(Y); + MySelfMap.CheckMovableAreaTransmit(this, X, Y); } //设置方向