用户:
凡尘飞絮查看:6 回复:5 评论:6 创建时间:2022-08-15T07:42:51
怎样在Kitten4中实现角色在大地图移动
2、地图类型
现将地图分为两类:
开放式世界+沙盒(存档需云存储,还可能需要用到服务端存储,制作难度和成本极高,不推荐。)
开放式世界(仅需云变量存储角色属性和坐标即可,简单)
第一种较难,不讲解。先讲解第二种。
再把这种地图分为几部分:
1、自由探索部分。
2、副本。
3、商店、主城等可以自由探索,但限制高,仅能实现一些NPC功能的地区。
地图中有多个自由探索部分和副本,通过某种方式相连。
最简单的,自然是利用kitten4坐标可以在屏幕外的方式,直接在屏幕里保存各个地点,并在角色位于传送点时将角色传送
当角色进入传送点+确定传送
进入loading
实体属性存档,停止加载
所有地图整体向反方向偏移
加载新地图
加载实体
玩家属性更改
停止loading
点赞0
评论
由于在整个过程中,玩家自身的坐标是不变的(始终为0,0),
因此就需要两个变量(绝对x、绝对y)来存储玩家的坐标。
例如:
在玩家向左移动10时,
绝对x-10
绝对y不变。
这样就可以通过侦测绝对x和绝对y来确定玩家位置。
如:
绝对x=114514且绝对y=1919810
-->玩家位于副本“下北泽”入口
-->触发接下来一系列事件……点赞0
评论
实例:
在游戏 EVE Online中,假设有两个星系49-U6U和J5A-IX。
两个星系均为边长2000的正方形范围,49-U6U的中心位于(0,0),J5A-IX的中心位于(5000,5000)。
设定:当玩家移动到49-U6U右侧边缘时,传送到J5A-IX。
实现方法
#玩家角色
绝对x=0
绝对y=0
如果loading=0:
{
当玩家按下w,绝对y+10
当玩家按下s,绝对y-10
当玩家按下a,绝对x-10
当玩家按下d,绝对x+10
}
重复执行:
{如果(绝对x>=1000):
{
发送广播“传送到J5A-IX”
loading=1
隐藏
保持等待直到loading=0
显示
}
#地图中的实体(如npc、怪物)
当开始被点击
重复执行:
{
如果loading=0:
{
#npc生成
}
}
当作为克隆体启动时
重复执行:
{
如果loading=0:
{
#在此处添加你想要的事件
}
否则:
{
隐藏
保持等待直到loading=0
显示
}
将x坐标设置为-绝对x
将y坐标设置为-绝对y
}
点赞1
评论