Project1

标题: 关于事件接触判定问题 [打印本页]

作者: 猫猫~    时间: 2010-9-24 12:12
标题: 关于事件接触判定问题
本帖最后由 猫猫~ 于 2010-9-24 12:13 编辑

1.如何在并行处理事件中判定是否与主角接触?


比如条件分歧:与主角接触:怎么怎么地
                 └除此之外:怎么怎么地


2.如何判定事件是否接触事件?



3.如何制作悬崖?
比如某事件走到了那里就会播放个掉下去的动画,然后消失?


新手提问,请大虾们指点~
作者: 猫猫~    时间: 2010-9-24 12:18
本帖最后由 猫猫~ 于 2010-9-24 12:35 编辑

哇!看帖不回!不能这样对待新手啊T T


还有哦,是接触,X=X  Y=Y那就重合了

用变量判定太麻烦了,有没有简单的?


献出你们的爱心吧



      ******       ******
    **********   **********
  ************* *************
*****************************
*****************************
*****************************
  ***************************
    ***********************
      *******************
        ***************
          ***********
            *******
              ***
               *
作者: ML4455739    时间: 2010-9-24 12:35
不麻烦,而且除了变量至少我想不出来其他招
作者: 猫猫~    时间: 2010-9-24 12:44
本帖最后由 猫猫~ 于 2010-9-24 12:46 编辑

会的'吱'一声,不会的'喵'一声嘛= =

看帖不回什么的最揪心啦~
作者: zhli667    时间: 2010-9-24 12:57
本帖最后由 zhli667 于 2010-9-24 13:15 编辑

问题1、并行事件页1设自动~写怎么怎么地~~事件页2设开关X为开时~写怎么怎么地~~在事件周围放4个事件~如果接触则开关X为开~~
问题2、在事件周围放的4个事件可以判断了吧~~
问题3、这个设角色移动就可以解决吧![至于动画、惨叫可以随便加吧]
作者: 猫猫~    时间: 2010-9-24 13:03
回复 zhli667 的帖子
方丈,阿弥陀佛~
问题一和二:要是事件会移动捏?

问题三:事件也要顾及,我总不能X=X  Y=Y的吧每个事件设进去吧?
作者: 认真的学    时间: 2010-9-24 13:04
本帖最后由 认真的学 于 2010-9-24 13:34 编辑

1、如果是【与主角接触的话】:
事件【脚本】输入以下脚本
  1. $playerx = $game_player.x
  2. $playery = $game_player.y
  3. if Input.press?(Input::UP)
  4. $playery = $game_player.y-1
  5. end
  6. if Input.press?(Input::DOWN)
  7. $playery = $game_player.y+1
  8. end
  9. if Input.press?(Input::LEFT)
  10. $playerx = $game_player.x-1
  11. end
  12. if Input.press?(Input::RIGHT)
  13. $playerx = $game_player.x+1
  14. end
复制代码
(当然不够输的话可以分成几部分,但是一个if一定要对一个同一脚本中的end)
然后条件分歧的脚本输入
  1. $game_map.events[事件编号].x == $playerx&&$game_map.events[事件编号].y == $playery
复制代码
之后就可以写入与主角接触的内容了......
2、这个问题我的方法可能复杂了点,不知道其他的大大们有没有更好的方法......
脚本编辑器找到Game_Character 3,在25左右的increase_steps下插入
  1. falseall
  2. @movedown = true
复制代码
在46行左右的increase_steps下插入
  1. falseall
  2. @moveleft = true
复制代码
在70行左右的increase_steps下插入
  1. falseall
  2. @moveright = true
复制代码
在94行左右的increase_steps下插入
  1. falseall
  2. @movedown = true
复制代码
然后在倒数第二行的下面插入
  1. def falseall
  2.     @movedown = false
  3.     @moveleft = false
  4.     @moveright = false
  5.     @moveup = false
  6.   end
  7.   def getmovedown
  8.     return @movedown
  9.   end
  10.   def getmoveleft
  11.     return @moveleft
  12.   end
  13.   def getmoveright
  14.     return @moveright
  15.   end
  16.   def getmoveup
  17.     return @moveup
  18.   end
复制代码
接着并行事件,条件分歧脚本插入
  1. ($game_map.events[1].x == $game_map.events[2].x+1&&$game_map.events[1].y == $game_map.events[2].y&&$game_map.events[2].getmoveright == true)||($game_map.events[1].x == $game_map.events[2].x-1&&$game_map.events[1].y == $game_map.events[2].y&&$game_map.events[2].getmoveleft == true)||($game_map.events[1].y == $game_map.events[2].y+1&&$game_map.events[1].x == $game_map.events[2].x&&$game_map.events[2].getmovedown == true)||($game_map.events[1].y == $game_map.events[2].y-1&&$game_map.events[1].x == $game_map.events[2].x&&$game_map.events[2].getmoveup == true)
复制代码
(上面的代码中,中括号的1,2可替换为其他的事件编号,但是替换要一致,不能第一个1替换为5后第二个替换为6)
然后就是事件对撞之后如何如何了......
3、将悬崖设为可以通行,然后设置地形标志(比如设置为5),然后变量代入角色的地形标志,之后条件分歧该变量是不是等于5,如果是,就播放动画,角色透明度修改什么的......
作者: 猫猫~    时间: 2010-9-24 13:16
回复 认真的学 的帖子

1.不知道是不是我的方法不对,我是这样用的




结果主角走到哪都显示“挨到我了~~”
作者: 认真的学    时间: 2010-9-24 13:40
关于LZ又提出的事件掉入悬崖,这个实现起来就比较简单:
并行处理条件分歧脚本输入:
  1. $game_map.terrain_tag($game_map.events[事件编号].x, $game_map.events[事件编号].y) == 悬崖的地形标志
复制代码
然后就是掉悬崖......




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