Project1

标题: 求教若干事件移动重叠时,相互挤开(在同格) 的方法或思路 [打印本页]

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

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

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

毕竟这种效果在正在做游戏中需要用到
作者: 国产吃货    时间: 2014-12-8 17:15
思路:
Game_Event也就是我们的事件,所处的位置是由x,y控制的。
这个x,y是指逻辑坐标而非实际坐标。
然后SpriteCharacter来根据GE的逻辑坐标来计算实际坐标(*32),并显示。

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

至于挤开。判断他们是否有碰撞,有的话让其中一个或者全都移动。
在GameEvent的Update_stop方法里刷新最佳。
作者: 刺夜之枪    时间: 2014-12-10 05:01
国产吃货 发表于 2014-12-8 04:15
思路:
Game_Event也就是我们的事件,所处的位置是由x,y控制的。
这个x,y是指逻辑坐标而非实际坐标。

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


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

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

补充一下沙发的思路:你还要考虑事件的触发条件(可以通过碰撞检测)等各种细节
作者: 国产吃货    时间: 2014-12-10 13:29
你还要考虑事件的触发条件(可以通过碰撞检测)等各种细节

是的,这是主要需要解决的问题。
你要知道有的时候可能 事件偏离了他的逻辑位置。
换句话说:你看他在这,其实他在那。
你要解决这个问题:最好让重要的需要交互的事件自主的往最靠近逻辑坐标的位置挤挤。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1