查看: 2248|回复: 4

[已经过期] 求教若干事件移动重叠时,相互挤开(在同格) 的方法或思路

[复制链接]
梦石
0
星屑
1816
在线时间
2527 小时
注册时间
2010-10-12
回帖
1336

开拓者

发表于 2014-12-8 14:03:18 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
我记得以前看到过一个脚本。真忘了叫什么,是说主角可以移动到任意点(不再是32*32的格子中心)
于是我想到如何才能让事件移动起来也充满松散的随机性呢。特别是人多密集的时候有时候不需要整齐划一的站队。
而且有时候两个可以互相穿透的事件移动到了同一格子, 叠在一起很难看的。如果他们能走着走着遇到一起后互相“挤开”就棒了。
当然我知道如果一个格子事件太多还是不好看。这个就不考虑了。

我自己摸索半天,写了点小函数改了一下character的@real_x 和@real_y
他们确实错开了但是因为@real_x 和@real_y的改变被判定成为了moving移动中。

那么请教一下大神们,如果能做到移动中互相“挤开”并且不影响moving啥的其他的相关的东西。
而且我做的不好,只是纯粹让他们颤抖了一下。

毕竟这种效果在正在做游戏中需要用到

评分

参与人数 1赞 +1 收起 理由
玛尔斯 + 1 我很赞同

查看全部评分


梦石
0
星屑
55
在线时间
218 小时
注册时间
2013-12-17
回帖
368
发表于 2014-12-8 17:15:48 | 显示全部楼层
思路:
Game_Event也就是我们的事件,所处的位置是由x,y控制的。
这个x,y是指逻辑坐标而非实际坐标。
然后SpriteCharacter来根据GE的逻辑坐标来计算实际坐标(*32),并显示。

如果你想实现你所说的功能,首先你就需要让Game_Event不再使用逻辑坐标显示。需要添加一个实际坐标。
并且SprChar也不再根据GE的逻辑坐标计算实际坐标。而是直接调用GE计算好的实际坐标。

至于挤开。判断他们是否有碰撞,有的话让其中一个或者全都移动。
在GameEvent的Update_stop方法里刷新最佳。

评分

参与人数 1星屑 +100 收起 理由
RyanBern + 100 塞糖

查看全部评分

RM脚本定制/修改/整合 群:143356012(入群注明来意)
回复

使用道具 举报

梦石
0
星屑
1816
在线时间
2527 小时
注册时间
2010-10-12
回帖
1336

开拓者

 楼主| 发表于 2014-12-10 05:01:40 | 显示全部楼层
国产吃货 发表于 2014-12-8 04:15
思路:
Game_Event也就是我们的事件,所处的位置是由x,y控制的。
这个x,y是指逻辑坐标而非实际坐标。

这么说的话,整个Game_Character,SpriteCharacter都要改了吗
果然好复杂((( ゚д゚)))

回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-12-10 12:43:46 | 显示全部楼层
本帖最后由 taroxd 于 2014-12-10 12:48 编辑
刺夜之枪 发表于 2014-12-10 05:01
这么说的话,整个Game_Character,SpriteCharacter都要改了吗
果然好复杂((( ゚д゚))) ...


要改的是以 Game_Character 为主,Sprite_Character 应该几乎不需要做改动。

因为和数据的计算有关的部分应该都是在 Game_Xxxx 里面,Sprite 只是处理显示而已。

补充一下沙发的思路:你还要考虑事件的触发条件(可以通过碰撞检测)等各种细节

评分

参与人数 1星屑 +100 收起 理由
RyanBern + 100 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
55
在线时间
218 小时
注册时间
2013-12-17
回帖
368
发表于 2014-12-10 13:29:47 | 显示全部楼层
你还要考虑事件的触发条件(可以通过碰撞检测)等各种细节

是的,这是主要需要解决的问题。
你要知道有的时候可能 事件偏离了他的逻辑位置。
换句话说:你看他在这,其实他在那。
你要解决这个问题:最好让重要的需要交互的事件自主的往最靠近逻辑坐标的位置挤挤。
RM脚本定制/修改/整合 群:143356012(入群注明来意)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部