Project1

标题: 求问如何实现『主角每改变一次朝向,进行一次判定』 [打印本页]

作者: 迷糊的安安    时间: 2013-2-14 12:41
标题: 求问如何实现『主角每改变一次朝向,进行一次判定』
是这样的 = = 被人问到怎么在游戏里做一个手电筒效果
[attach]152165[/attach]
↑类似这样……

然后我就采用了喜闻乐见的并行公共事件判定
但是持续判定比较耗系统资源
于是就想主角走动的时候才判定,不走的时候不判定,然后就写成了下面这样……
[attach]152166[/attach]
发现貌似还是不大对劲 = = 这个moving似乎是判断位置变更
主角遇到障碍物转向时,因为位置并没变更,所以电筒光线并不会随着主角的转向而变化……
于是请各位指导 = = 如何用最简单的方法实现『主角每变换一次朝向,就判定一次,以决定电筒光是不是要跟着变化』……
求教……


嗯工程在这里
http://pan.baidu.com/share/link?shareid=251503&uk=4228028794
敬谢指导
作者: cinderelmini    时间: 2013-2-14 12:41
狱冥幻翼 发表于 2013-2-14 21:57
bug反馈
楼主说的“主角遇到障碍物转向时,因为位置并没变更,所以电筒光线并不会随着主角的转向而变化… ...

测试的时候木有发现的说~~在角落里不移动转方向也会更新捏……
于是如果真不行的话~
把moving的判定去掉咧?
反正用了方向判定~只在方向更换时判定和执行一次就不动它了~
作者: zeldafd    时间: 2013-2-14 13:06
胡吹幾句,希望有幫助吧。
設置個公共事件,用作判斷和設置角色面向actorDir變量。
再加一下old_actorDir,用作記錄上一個actorDir的值。
當actorDir != actorDir時,
圖片便轉換。

咦......都是胡吹的吧.....只因手機沒RM......
作者: 喵呜喵5    时间: 2013-2-14 13:33
最愚蠢的方法:
Input.press?(:DOWN) ||Input.press?(:LEFT) ||Input.press?(:RIGHT) ||Input.press?(:UP)


作者: 狱冥幻翼    时间: 2013-2-14 13:43
本帖最后由 狱冥幻翼 于 2013-2-14 23:11 编辑

对应公共事件   下1 右3 上4 左2
  1. class Game_CharacterBase
  2.    def set_direction(d)
  3.       @direction = d if !@direction_fix && d != 0
  4.       @stop_count = 0
  5.       if @direction_old != nil
  6.         if d != @direction_old
  7.           case d
  8.            when 2
  9.              $game_temp.reserve_common_event(1)
  10.            when 4
  11.              $game_temp.reserve_common_event(2)
  12.            when 6
  13.              $game_temp.reserve_common_event(3)
  14.            when 8
  15.              $game_temp.reserve_common_event(4)
  16.           end
  17.         end
  18.       else
  19.            case d
  20.            when 2
  21.              $game_temp.reserve_common_event(1)
  22.            when 4
  23.              $game_temp.reserve_common_event(2)
  24.            when 6
  25.              $game_temp.reserve_common_event(3)
  26.            when 8
  27.              $game_temp.reserve_common_event(4)
  28.           end
  29.       end
  30.       @direction_old = d
  31.    end
  32. end
复制代码
范例http://l4.yunpan.cn/lk/Q2RQTVccbpIfq
作者: zhangchi5    时间: 2013-2-14 13:46
我改了2个事件页。。。



作者: cinderelmini    时间: 2013-2-14 13:53
稍微试了一下~在Game_Player里加个手电筒的方向变量~
之后事件里判定一下若是手电方向不等于角色方向就更新,之后再赋值给手电方向变量~
总之……饭粒如下……(DLL请自行添加……附件太大……)
手电筒范例VA.zip (402.31 KB, 下载次数: 116)

作者: 狱冥幻翼    时间: 2013-2-14 21:57
cinderelmini 发表于 2013-2-14 13:53
稍微试了一下~在Game_Player里加个手电筒的方向变量~
之后事件里判定一下若是手电方向不等于角色方向就更新 ...

bug反馈
楼主说的“主角遇到障碍物转向时,因为位置并没变更,所以电筒光线并不会随着主角的转向而变化……"
作者: j433463    时间: 2013-2-14 23:06
刚才来看到这楼,不太明白,玩家面向不是 $game_player.direction 吗?2468,直接
  1. case $game_player.direction
  2. when 2
  3.   电筒向下
  4. when 4
  5.   电筒向左
  6. when 6
  7.   电筒向右
  8. when 8
  9.   电筒向上
  10. end
复制代码
这样设置就行了,站在原位改面向也会有效的,为什么要搞那么复杂?
作者: Sion    时间: 2013-2-15 13:04
本帖最后由 Sion 于 2013-2-15 13:13 编辑

http://pan.baidu.com/share/link?shareid=348881&uk=2181038425
改好的工程,谢谢安姐在情人节给我这么多张好人卡{:2_271:}

不过我试了试,不判定,每一帧都根据朝向更改图片也是一点都不卡呀。。
作者: tseyik    时间: 2013-2-15 13:26
改成這様行不行

作者: 黑化の鼠标    时间: 2013-2-15 14:46
本帖最后由 黑化の鼠标 于 2013-2-15 14:55 编辑
tseyik 发表于 2013-2-15 13:26
改成這様行不行


这个方法虽然能对应通常的只使用一个按键的状况,
但是例如如果同时按下←↓,或者←↑之类的同时进行两个按键时会出问题
嗯,大致上上下这个方向上不会出问题,但是左右的方向会比较糟糕

大致上弄成这样进行双重判定之后问题应该没了

还有,嗯....顺带,如果觉得在公共事件里弄并行处理很卡的话,把并行事件弄到需要使用的地图上,虽然工作量会增加一些,而且还得逐个设定,不过貌似会劳有所值




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