猫史档案馆


求助!大地图制作

用户:凡尘飞絮凡尘飞絮查看:6 回复:5 评论:6 创建时间:2022-08-15T07:42:51


怎样在Kitten4中实现角色在大地图移动


回复

上一页1 页 / 共 1下一页
Asheep233Asheep233

1、角色移动方式

角色移动方式一般有两种,360°和八向移动,360°的教程我做过,可以查看我的个人主页。八向移动就不教了,wasd那种。

点赞0


评论


Asheep233Asheep233

2、地图类型

现将地图分为两类:

开放式世界+沙盒(存档需云存储,还可能需要用到服务端存储,制作难度和成本极高,不推荐。)

开放式世界(仅需云变量存储角色属性和坐标即可,简单)

第一种较难,不讲解。先讲解第二种。

再把这种地图分为几部分:

1、自由探索部分。

2、副本。

3、商店、主城等可以自由探索,但限制高,仅能实现一些NPC功能的地区。

地图中有多个自由探索部分和副本,通过某种方式相连。

最简单的,自然是利用kitten4坐标可以在屏幕外的方式,直接在屏幕里保存各个地点,并在角色位于传送点时将角色传送

当角色进入传送点+确定传送
进入loading
实体属性存档,停止加载
所有地图整体向反方向偏移
加载新地图
加载实体
玩家属性更改
停止loading

 

点赞0


评论


Asheep233Asheep233

由于在整个过程中,玩家自身的坐标是不变的(始终为0,0),

因此就需要两个变量(绝对x、绝对y)来存储玩家的坐标。

例如:

在玩家向左移动10时,

绝对x-10

绝对y不变。

这样就可以通过侦测绝对x和绝对y来确定玩家位置。

如:

绝对x=114514且绝对y=1919810
-->玩家位于副本“下北泽”入口
-->触发接下来一系列事件……

点赞0


评论


Asheep233Asheep233

实例:

在游戏 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


评论


Asheep233Asheep233

注意到,为了减小游戏的卡顿,你还需要设置强加载和弱加载区域。

在强加载区域内,一切都正常运行。

在弱加载区域内,除了实体运算以外的其他内容正常运行。

点赞0


评论