Project1

标题: 如何判断角色脚下坐标? [打印本页]

作者: heychen    时间: 2008-3-22 19:05
标题: 如何判断角色脚下坐标?
我有一个想法,就是地图的宽减去角色的X坐标,地图的高减去角色的Y坐标,问题是怎么得到地图的宽和高??? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: cdkrr    时间: 2008-3-22 19:10
不知道,期待答案-  -
{/cy}
作者: havealook    时间: 2008-3-22 19:18
直接用事件中的变量做,当进入新地图时候,设置个并行事件,把变量调整为地图的宽和高(代入常量),比较麻烦...
作者: 司马睿风    时间: 2008-3-22 19:20
变量里有个属性就是角色X,Y坐标,用这个代入就好了
作者: suicaoya123    时间: 2008-3-22 19:21
这样做没意义``````请问lz 有什么用```???
作者: xiarongshan    时间: 2008-3-22 19:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: heychen    时间: 2008-3-22 19:31
楼上的高手帮忙看这个
http://rpg.blue/viewthread.php?tid=81492&ntime=2008%2D3%2D22+11%3A28%3A49

我的想法做一个钓鱼系统,当确认钓鱼的时候脚下出现一条进度条,我当初也是以为用$game_player.x
$game_player.y 的,可是实验后发现,调用$game_player.x
$game_player.y 后进度条出现在左上角而不是脚下,但会根据角色的移动进度条有微小的移动。。
作者: wy29    时间: 2008-3-22 19:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: heychen    时间: 2008-3-22 19:54
以下引用wy29于2008-3-22 11:46:02的发言:

进度条出现在左上角:
那是因为$game_player.x, $game_player.y值就是玩家的左上角位置。

你如果要进度条出现在玩家脚下,就得更改进度条的位置。

把进度条的位置改成:
x = $game_player.x,
y = $game_player.y + 1

至于地图的高和宽:
高 = $game_map.height
宽 = $game_map.width


我把38.39行的
$x=0
$y=0
去了
然后把when0下面的
     self.x=$x
     self.y=$y
改成
     self.x=$game_player.x
     self.y=$game_player.y + 1

没变化- -?{/gg}
作者: wy29    时间: 2008-3-22 20:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: heychen    时间: 2008-3-22 20:11
改了,这是新的

#-------------------------------------------------------------------------
# ● 时间条参数设定
#    设定技巧:可以根据"设定移动速度"来放慢或加快移动
#             如果设置"移动速度"为负数,就会倒退走(必须$minbar<=$maxbar)
#             如果时间条的宽度小,可以把$nextbar设置为小数来放慢速度
#-------------------------------------------------------------------------
#设置时间条初始值
$minbar=0

#设置时间条的最大值,宽度
$maxbar=50

#设置时间条的移动速度可以是"小数"或"整数(负数)"
$nextbar=1

#设置时间条运行和显示的开关,和初始化开关
$show=1 #显示/隐藏时间条
$stop=2 #启动/停止时间条
$init=3 #初始化时间条
$done=4 #到时间之后打开的开关,可以用个自动执行的公共时间调此开关

#设置窗口宽高
$width=$maxbar+114
$height=64

#设置窗口位置
$o=0
#设置参考
#        0-采用$x,$y的自定义设置
#        1-左上角
#        2-正上
#        3-右上角
#        4-正中
#        5-左下角
#        6-正下
#        7-右下角

#定义窗口透明程度,0透明,255不透明数值范围0~255
$opacity=0         #设置窗口边框透明度
$back_opacity=0    #设置窗口背景透明度

#------------------------------------------------------------------------
# ● 时间条描绘
#------------------------------------------------------------------------
def draw_time_bar(x, y, width)
# 边框设定
self.contents.font.color = system_color
self.contents.draw_text(x,y,60,32,"时间:")
self.contents.fill_rect(x-2+60, y+16, width+4,8, Color.new(255, 255, 255, 255))
self.contents.fill_rect(x-1+60, y+17, width+2,6, Color.new(0, 0, 0, 255))
# 时间条长度设定
w = $minbar
# 时间条颜色设定
self.contents.fill_rect(x+60, y+18, w,1, Color.new(96,255, 96, 255))
self.contents.fill_rect(x+60, y+19, w,1, Color.new(0, 255, 0, 255))
self.contents.fill_rect(x+60, y+20, w,1, Color.new(0, 128, 0, 255))
self.contents.fill_rect(x+60, y+21, w,1, Color.new(0, 0, 0, 255))
end

#----------------------------------------------------------------------------
# ● 时间窗口描绘
#----------------------------------------------------------------------------
class Window_Timebar < Window_Base
#--------------------------------------------------------------------------
# ● 初始化窗口
#--------------------------------------------------------------------------
def initialize
  super(0, 0, $width, $height)
  self.contents = Bitmap.new(width - 32, height - 32)
  refresh
end
#--------------------------------------------------------------------------
# ● 窗口内容
#--------------------------------------------------------------------------
def refresh
  #判断时间窗口是否可见
  if $game_switches[$show]
    self.visible=true
  else
    self.visible=false
  end
  
  #设置时间窗口透明度
  self.back_opacity=$back_opacity
  self.opacity=$opacity
  
  #设置窗口位置
  case $o
  when 0

self.x=$game_player.x
self.y=$game_player.y + 1

   when 1
    self.x=0
    self.y=0
  when 2
    self.x=320-$width/2
    self.y=0
  when 3
    self.x=640-$width
    self.y=0
  when 4
    self.x=320-$width/2
    self.y=240-$height/2
  when 5
    self.x=0
    self.y=480-$height
  when 6
    self.x=320-$width/2
    self.y=480-$height
  when 7
    self.x=640-$width
    self.y=480-$height
  else
    #防止错误发生
    self.x=100  
    self.y=100
  end
  
  #窗口内容
  self.contents.clear
  draw_time_bar(4,0,$maxbar)
end
end

#-----------------------------------------------------------------------------
# ● 地图上显示时间描绘
#-----------------------------------------------------------------------------
class Scene_Map
# 声明别名,以免冲突,主要用于功能追加
alias mohock_main main
def main
# 生成倒计时窗口
@time_bar=Window_Timebar.new

# 调用别名 (具体功能不清楚,但是不调用必定有错误)
mohock_main
# 释放倒计时窗口
@time_bar.dispose
end

# 声明别名,以免冲突,主要用于功能追加
alias mohock_update update
def update
# 如果初始化开关打开
if $game_switches[$init]
   # 初始化数值
   $minbar=0
   $game_switches[$init]=false
end
# 刷新时间条,增加数值自己改动
if $game_switches[$stop]
   #判断是否超过最大数值,是则执行任务,不是继续增加
   if $minbar >= $maxbar
    #执行开关设置为真
    $game_variables[$done] = true
   else
    $minbar += $nextbar
   end
end
  @time_bar.refresh
  # 调用别名 (具体功能不清楚,但是不调用必定有错误)
  mohock_update
end
end

作者: wy29    时间: 2008-3-22 20:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: heychen    时间: 2008-3-22 20:24
=。=好了。太感谢了{/ll}。。。。。

在补充一个问题好吗?
#设置时间条的移动速度可以是"小数"或"整数(负数)"
$nextbar=1的1是什么单位???秒?帧?
作者: wy29    时间: 2008-3-22 20:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: heychen    时间: 2008-3-22 20:48
那明白了。谢谢{/dy}




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