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

Project1

 找回密码
 注册会员
搜索
楼主: 趙雲
打印 上一主题 下一主题

申请VX区版主

 关闭 [复制链接]

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

21
发表于 2008-2-1 05:12:36 | 只看该作者
呵呵,确实不再出错了,不过与对方的要求有些出入,能否麻烦LZ再改下。

这是对方的描述:
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2007-5-18
帖子
2178
22
发表于 2008-2-1 05:37:44 | 只看该作者
那啥,我是来支持LZ的
你说过我这种人不可能交到很多朋友吧——……切,这种事,谁相信啊?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

SB們大家好<

梦石
0
星屑
50
在线时间
3 小时
注册时间
2008-1-7
帖子
457
23
 楼主| 发表于 2008-2-1 05:42:06 | 只看该作者
以下引用superufo于2008-1-31 20:46:21的发言:

就是假设原来有99个项目,一页只能显示20个,当index为20再往下拉时可以拉到21
现在把往下拉改成往左右拉……

收到,蛮麻烦,基本要改整个Selectable 我尽力


以下引用RMVX于2008-1-31 20:48:52的发言:

呵呵,我来迟了不知道还能申请不?
可以的话希望楼主替在下想一个绳索(即从一点向另一点射线)的模型.
(不是直接连线而是射线的.关键是执行时的效率)


三角函数,线性描绘这些基本是我盲点 遗憾暂时不能帮忙
美兽殿帮回答下吧



以下引用美兽于2008-1-31 21:12:36的发言:

呵呵,确实不再出错了,不过与对方的要求有些出入,能否麻烦LZ再改下。

这是对方的描述:


这就要考虑很多情况了,正在写..



以下引用wu3846111于2008-1-31 21:37:44的发言:

那啥,我是来支持LZ的


谢谢.
这不是6R,我对自己说。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-9-6
帖子
15
24
发表于 2008-2-1 06:24:30 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

SB們大家好<

梦石
0
星屑
50
在线时间
3 小时
注册时间
2008-1-7
帖子
457
25
 楼主| 发表于 2008-2-1 06:26:12 | 只看该作者
楼下已给出完整版..
这不是6R,我对自己说。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

26
发表于 2008-2-1 06:39:45 | 只看该作者
哎~~写的有些烦琐了,给你个参考,加油。
module Line_Target def self.player_target(x, y) xo, yo = $game_player.x, $game_player.y return self.find_target(xo, yo, x, y) end def self.find_target(x1, y1, x2, y2) (return false) unless self.find_can?(x1, y1, x2, y2) d = self.get_direction(x1, y1, x2, y2) fx = (d == 6 ? 1 : d == 4 ? -1 : 0) fy = (d == 2 ? 1 : d == 8 ? -1 : 0) new_x, new_y = x1, y1 while true new_x += fx; new_y += fy unless $game_map.passable?(new_x, new_y) return [(new_x -= fx), (new_y -= fy)] <====遮挡落点。 end break if (new_x == x2 and new_y == y2) end return true end def self.get_direction(xo, yo, xt, yt) d = 6 if xt > xo d = 4 if xt < xo d = 8 if yt < yo d = 2 if yt > yo return d end def self.find_can?(x1, y1, x2, y2) (return false) if (x1 == x2 and y1 == y2) (return false) if (x1 != x2 and y1 != y2) return true end end
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

SB們大家好<

梦石
0
星屑
50
在线时间
3 小时
注册时间
2008-1-7
帖子
457
27
 楼主| 发表于 2008-2-1 08:15:56 | 只看该作者
简化了一些,按照自己的想法去完成了..不过还是多谢赐教
  1. class Game_Character

  2.   def xy_test(x_plus,y_plus)
  3.     if y_plus == 0
  4.       for i in [0,x_plus].min..[0,x_plus].max
  5.         plusx = x_plus > 0 ? x_plus - i : i  
  6.         next if !map_passable?(@x + plusx, @y)
  7.         x_plus = plusx
  8.         break
  9.       end  
  10.     elsif x_plus == 0
  11.       for i in [0,y_plus].min..[0,y_plus].max
  12.         plusy = y_plus > 0 ? y_plus - i : i  
  13.         next if !map_passable?(@x , @y + plusy)
  14.         y_plus = plusy
  15.         break
  16.       end   
  17.     elsif x_plus ==  y_plus
  18.       for i in [0,x_plus].min..[0,x_plus].max
  19.         plusx = x_plus > 0 ? x_plus - i : i  
  20.         next if !map_passable?(@x + plusx, @y + plusx)
  21.         x_plus = plusx
  22.         y_plus = plusx
  23.         break
  24.       end  
  25.     elsif x_plus.abs ==  y_plus.abs  
  26.       for i in [0,x_plus].min..[0,x_plus].max
  27.         plusx = x_plus > 0 ? x_plus - i : i
  28.         plusy = y_plus > 0 ? y_plus + i : -i
  29.         next if !map_passable?(@x + plusx, @y + plusy)
  30.         x_plus = plusx
  31.         y_plus = plusy
  32.         break
  33.       end      
  34.     end
  35.      return [x_plus,y_plus]
  36.   end  
  37.   
  38. def pb_test(x_plus, y_plus)
  39.      if (y_plus != 0 and x_plus == 0) or (x_plus != 0 and y_plus == 0)         or x_plus.abs ==  y_plus.abs
  40.         x_plus = xy_test(x_plus,0)[0]
  41.         y_plus = xy_test(0,y_plus)[1]
  42.      else
  43.      return []  
  44.      end
  45.      return [x_plus, y_plus]
  46. end
  47.   
  48.   
  49.   def abs_test(x_plus, y_plus)
  50.     s = false
  51.     p = (x_plus.abs - y_plus.abs).abs
  52.     if x_plus.abs > y_plus.abs
  53.         for i in 1..p
  54.             plus = x_plus > 0 ? x_plus - i : x_plus + i
  55.            next if !map_passable?(@x + plus , @y + y_plus)
  56.             x_plus = plus
  57.             s = true
  58.            break
  59.          end     
  60.     else
  61.         for i in 1..p
  62.           plus = y_plus > 0 ? y_plus - i : y_plus + i
  63.         next if !map_passable?(@x + x_plus , @y + plus)
  64.           y_plus = plus
  65.           s = true
  66.         break
  67.         end
  68.     end
  69.     if !s
  70.         if x_plus.abs > y_plus.abs  
  71.         x_plus = x_plus > 0 ? y_plus.abs : - y_plus.abs
  72.         else
  73.         y_plus = y_plus > 0 ? x_plus.abs : - x_plus.abs
  74.         end
  75.       b = pb_test(x_plus, y_plus)
  76.       x_plus = b[0]
  77.       y_plus = b[1]
  78.     end   
  79.     return [x_plus, y_plus]
  80.   end

  81.   def jump(x_plus, y_plus)  
  82.     if x_plus.abs > y_plus.abs            # 横向距离长
  83.       x_plus < 0 ? turn_left : turn_right
  84.     elsif x_plus.abs > y_plus.abs         # 纵向距离长
  85.       y_plus < 0 ? turn_up : turn_down
  86.     end
  87.     if !map_passable?(@x + x_plus, @y + y_plus)
  88.      a = pb_test(x_plus, y_plus)
  89.       if a.empty?
  90.       x_plus = abs_test(x_plus,y_plus)[0]
  91.       y_plus = abs_test(x_plus,y_plus)[1]
  92.       else
  93.       x_plus = a[0]
  94.       y_plus = a[1]
  95.       end
  96.     end
  97.      @x += x_plus
  98.      @y += y_plus  
  99.     distance = Math.sqrt(x_plus * x_plus + y_plus * y_plus).round
  100.     @jump_peak = 10 + distance - @move_speed
  101.     @jump_count = @jump_peak * 2
  102.     @stop_count = 0
  103.     straighten
  104.   end
  105.   
  106. end
复制代码
这不是6R,我对自己说。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

28
发表于 2008-2-1 08:22:30 | 只看该作者
呵呵,委托人已会周公去了,暂时测试不了,先代她谢谢你了。
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

SB們大家好<

梦石
0
星屑
50
在线时间
3 小时
注册时间
2008-1-7
帖子
457
29
 楼主| 发表于 2008-2-1 08:25:08 | 只看该作者
   def self.find_can?(x1, y1, x2, y2)
       (return false) if (x1 == x2 and y1 == y2)
       (return false) if (x1 != x2 and y1 != y2)
       return true
   end  


恕我鲁钝,
彩色那句是说 当角色的XY和目标XY都不一致的话就return false 么?
那不是只能找竖线或横线的跳跃了么?
这不是6R,我对自己说。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

NewS-

梦石
0
星屑
50
在线时间
5 小时
注册时间
2005-10-23
帖子
3651

贵宾

30
发表于 2008-2-1 08:45:10 | 只看该作者
这个帖子很强大啊~ 特来支持楼主~ {/hx}
66RPG,这几个简单字符,之于我代表了什么?泪泪博客:http://hi.baidu.com/rpgmakerxp
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 09:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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