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

Project1

 找回密码
 注册会员
搜索
查看: 7943|回复: 11
打印 上一主题 下一主题

[已经解决] 求问如何实现『主角每改变一次朝向,进行一次判定』

[复制链接]

Lv4.逐梦者 (管理员)

砂上描绘的愿想

梦石
15
星屑
4145
在线时间
5076 小时
注册时间
2012-1-15
帖子
4618

开拓者贵宾短篇七成年组亚军剧作品鉴家

跳转到指定楼层
 楼主| 发表于 2013-2-14 12:41:47 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
3星屑
是这样的 = = 被人问到怎么在游戏里做一个手电筒效果

↑类似这样……

然后我就采用了喜闻乐见的并行公共事件判定
但是持续判定比较耗系统资源
于是就想主角走动的时候才判定,不走的时候不判定,然后就写成了下面这样……

发现貌似还是不大对劲 = = 这个moving似乎是判断位置变更
主角遇到障碍物转向时,因为位置并没变更,所以电筒光线并不会随着主角的转向而变化……
于是请各位指导 = = 如何用最简单的方法实现『主角每变换一次朝向,就判定一次,以决定电筒光是不是要跟着变化』……
求教……


嗯工程在这里
http://pan.baidu.com/share/link?shareid=251503&uk=4228028794
敬谢指导
若后退就皆成谎言。

Lv1.梦旅人

梦石
0
星屑
54
在线时间
1049 小时
注册时间
2012-1-27
帖子
1446
11
发表于 2013-2-15 14:46:47 | 只看该作者
本帖最后由 黑化の鼠标 于 2013-2-15 14:55 编辑
tseyik 发表于 2013-2-15 13:26
改成這様行不行


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

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

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

点评

同时按两个方向键?那就要参照 8dir 方式处理了...  发表于 2013-2-15 14:51
惨了,没装全局变量,这下只能玩读档进EXTRA的把戏了∑(゚ω゚ノ)ノ
我感觉我快成兜售Q键幻灯片狂魔了
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
23068
在线时间
8648 小时
注册时间
2011-12-31
帖子
3367
10
发表于 2013-2-15 13:26:28 | 只看该作者
改成這様行不行

点评

抱歉T_T,直接盗用思路了呢.....在此谢罪....  发表于 2013-2-15 14:57
回复

使用道具 举报

Lv2.观梦者 (暗夜天使)

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
帖子
2309

贵宾

9
发表于 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 我很赞同

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
8
发表于 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
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
491 小时
注册时间
2012-1-27
帖子
421

整合系统大赛RMVA达人

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

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

点评

照理说不会的呀……因为不是根据位置的改变而是根据角色方向和手电方向是否一致来判断的咧……哀家回头瞅瞅……  发表于 2013-2-14 22:01
回复

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9418
在线时间
2749 小时
注册时间
2008-9-5
帖子
3544

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

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

点评

感谢,去掉moving以后可行,只在方向变换时刷新图片,其余时候不刷新。  发表于 2013-2-15 15:13
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
41 小时
注册时间
2010-7-10
帖子
111
5
发表于 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
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
491 小时
注册时间
2012-1-27
帖子
421

整合系统大赛RMVA达人

4
发表于 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
回复

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21825
在线时间
9436 小时
注册时间
2012-6-19
帖子
7120

开拓者短篇九导演组冠军

3
发表于 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
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
704 小时
注册时间
2011-12-27
帖子
941
2
发表于 2013-2-14 13:06:11 手机端发表。 | 只看该作者
胡吹幾句,希望有幫助吧。
設置個公共事件,用作判斷和設置角色面向actorDir變量。
再加一下old_actorDir,用作記錄上一個actorDir的值。
當actorDir != actorDir時,
圖片便轉換。

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

点评

这是对的!!!!  发表于 2013-2-14 13:47
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-12-24 01:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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