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

Project1

 找回密码
 注册会员
搜索

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

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

正文摘要:

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

回复

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


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

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

还有,嗯....顺带,如果觉得在公共事件里弄并行处理很卡的话,把并行事件弄到需要使用的地图上,虽然工作量会增加一些,而且还得逐个设定,不过貌似会劳有所值
tseyik 发表于 2013-2-15 13:26:28
改成這様行不行
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:}

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

点评

感谢工程,做得很认真……玩家朝向为X时,若图片不为X则刷新图片,也是一种很好的思路。非常赞!不过最佳答案只能给1个 = =……  发表于 2013-2-15 15:19

评分

参与人数 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
复制代码
这样设置就行了,站在原位改面向也会有效的,为什么要搞那么复杂?

点评

于是哀家的6L果断被忽略不计了咩……  发表于 2013-2-15 11:32
那就用一个 old_direction 变量来存 direction 值,再在那判断之前加个 if old_direction != $game_player.direction 条件不就可以了?  发表于 2013-2-15 01:59
这样会导致一刻不停地刷图片吧……我想要的效果是,仅仅在玩家朝向变化的时候刷新图片一次。  发表于 2013-2-15 00:46
这样的话会重复构建位图  发表于 2013-2-14 23:13
狱冥幻翼 发表于 2013-2-14 21:57:40
cinderelmini 发表于 2013-2-14 13:53
稍微试了一下~在Game_Player里加个手电筒的方向变量~
之后事件里判定一下若是手电方向不等于角色方向就更新 ...

bug反馈
楼主说的“主角遇到障碍物转向时,因为位置并没变更,所以电筒光线并不会随着主角的转向而变化……"

点评

照理说不会的呀……因为不是根据位置的改变而是根据角色方向和手电方向是否一致来判断的咧……哀家回头瞅瞅……  发表于 2013-2-14 22:01
cinderelmini 发表于 2013-2-14 13:53:25
稍微试了一下~在Game_Player里加个手电筒的方向变量~
之后事件里判定一下若是手电方向不等于角色方向就更新,之后再赋值给手电方向变量~
总之……饭粒如下……(DLL请自行添加……附件太大……)
手电筒范例VA.zip (402.31 KB, 下载次数: 116)

点评

感谢,去掉moving以后可行,只在方向变换时刷新图片,其余时候不刷新。  发表于 2013-2-15 15:13
zhangchi5 发表于 2013-2-14 13:46:49
我改了2个事件页。。。


点评

我声明。。。 def moving? @real_x != @x || @real_y != @y end 这明显也占内存!!!多了8个字节!  发表于 2013-2-14 14:01
LZ就是因为觉得这么做太占内存所以才用Moving的…………  发表于 2013-2-14 13:50
狱冥幻翼 发表于 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

点评

你的方法是有BUG的,触发NPC事件时,玩家朝向没变,但是手电光方向会变。  发表于 2013-2-15 00:52
对应公共事件 右3 左2 上4 下1  发表于 2013-2-14 13:47
喵呜喵5 发表于 2013-2-14 13:33:15
最愚蠢的方法:
Input.press?(:DOWN) ||Input.press?(:LEFT) ||Input.press?(:RIGHT) ||Input.press?(:UP)

点评

我是脚本盲不知道……感觉和LZ原来用的Moving方法占内存程度是半斤八两……只是解决了Moving无法完成的卡位变换手电筒光源位置而已……  发表于 2013-2-14 13:43
太占内存了~lz肯定不满意  发表于 2013-2-14 13:36
zeldafd 发表于 2013-2-14 13:06:11
胡吹幾句,希望有幫助吧。
設置個公共事件,用作判斷和設置角色面向actorDir變量。
再加一下old_actorDir,用作記錄上一個actorDir的值。
當actorDir != actorDir時,
圖片便轉換。

咦......都是胡吹的吧.....只因手機沒RM......

点评

这是对的!!!!  发表于 2013-2-14 13:47
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-6-19 12:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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