设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

求问如何实现『主角每改变一次朝向,进行一次判定』

查看数: 7760 | 评论数: 11 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-2-14 12:41

正文摘要:

是这样的 = = 被人问到怎么在游戏里做一个手电筒效果 ↑类似这样…… 然后我就采用了喜闻乐见的并行公共事件判定 但是持续判定比较耗系统资源 于是就想主角走动的时候才判定,不走的时候不判定,然后就写成了下面 ...

回复

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


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

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

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

点评

同时按两个方向键?那就要参照 8dir 方式处理了...  发表于 2013-2-15 14:51
tseyik 发表于 2013-2-15 13:26:28
改成這様行不行

点评

抱歉T_T,直接盗用思路了呢.....在此谢罪....  发表于 2013-2-15 14:57
Sion 发表于 2013-2-15 13:04:53
本帖最后由 Sion 于 2013-2-15 13:13 编辑

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

不过我试了试,不判定,每一帧都根据朝向更改图片也是一点都不卡呀。。

评分

参与人数 1星屑 +220 梦石 +1 收起 理由
迷糊的安安 + 220 + 1 我很赞同

查看全部评分

j433463 发表于 2013-2-14 23:06:08
刚才来看到这楼,不太明白,玩家面向不是 $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
复制代码
这样设置就行了,站在原位改面向也会有效的,为什么要搞那么复杂?
狱冥幻翼 发表于 2013-2-14 21:57:40
cinderelmini 发表于 2013-2-14 13:53
稍微试了一下~在Game_Player里加个手电筒的方向变量~
之后事件里判定一下若是手电方向不等于角色方向就更新 ...

bug反馈
楼主说的“主角遇到障碍物转向时,因为位置并没变更,所以电筒光线并不会随着主角的转向而变化……"
cinderelmini 发表于 2013-2-14 13:53:25
稍微试了一下~在Game_Player里加个手电筒的方向变量~
之后事件里判定一下若是手电方向不等于角色方向就更新,之后再赋值给手电方向变量~
总之……饭粒如下……(DLL请自行添加……附件太大……)
手电筒范例VA.zip (402.31 KB, 下载次数: 116)
zhangchi5 发表于 2013-2-14 13:46:49
我改了2个事件页。。。


狱冥幻翼 发表于 2013-2-14 13:43:27
本帖最后由 狱冥幻翼 于 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
喵呜喵5 发表于 2013-2-14 13:33:15
最愚蠢的方法:
Input.press?(:DOWN) ||Input.press?(:LEFT) ||Input.press?(:RIGHT) ||Input.press?(:UP)

zeldafd 发表于 2013-2-14 13:06:11
胡吹幾句,希望有幫助吧。
設置個公共事件,用作判斷和設置角色面向actorDir變量。
再加一下old_actorDir,用作記錄上一個actorDir的值。
當actorDir != actorDir時,
圖片便轉換。

咦......都是胡吹的吧.....只因手機沒RM......
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-21 15:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表