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

Project1

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

[有事请教] 若干双人游戏的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
65
在线时间
8 小时
注册时间
2024-2-8
帖子
3
跳转到指定楼层
1
发表于 2025-4-9 14:40:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 shenqideshijuan 于 2025-4-9 15:05 编辑

重新编辑一下……既然发问了,就把我要问的问题塞到一个帖子里吧……这样有大神看直接就全帮我解答了

最近在做一个双人游戏,默认每个地图编号为1,2的事件是主角,Player直接架空不管它,采用事件移动,监测事件的xy坐标,根据1P2P站在哪个位置来决定执行哪些事件
摄像机默认在1P,按F5可以切换摄像机

现在有若干问题……
【1】如何让视角跟随NPC(事件)移动

我不太明白该怎么样让视角移动到2P
站内搜索了两个小时……还是没有什么成果
我知道有一个脚本,但是是XP的,转移到VA不兼容,我不懂VA的脚本也没法改
  1. class Game_Player < Game_Character
  2.   #--------------------------------------------------------------------------
  3.   # ● 像通到画面中央一样的设置地图的显示位置
  4.   #--------------------------------------------------------------------------
  5.   def centerNPC(id)
  6.     if id==0
  7.     max_x = ($game_map.width - 20) * 128
  8.     max_y = ($game_map.height - 15) * 128
  9.     $game_map.display_x = [0, [$game_player.real_x - CENTER_X, max_x].min].max
  10.     $game_map.display_y = [0, [$game_player.real_y - CENTER_Y, max_y].min].max
  11.     else
  12.     max_x = ($game_map.width - 20) * 128
  13.     max_y = ($game_map.height - 15) * 128
  14.     $game_map.display_x = [0, [$game_map.events[id].real_x - CENTER_X, max_x].min].max
  15.     $game_map.display_y = [0, [$game_map.events[id].real_y - CENTER_Y, max_y].min].max
  16.     end
  17.   end  
  18. end
复制代码


【2】怎么样把rmva自带的Num2468移动,Num0菜单,数字键Enter关掉

我不关的话,就没法区分1P和2P是谁按下的X/C键。。。

【3】怎么样和移动的人物进行交互

因为我推翻了用Player本体去跟事件交互的设定嘛,所以1P2P要办的所有事情,都必须要通过xy判定来进行
当1P2P到某个坐标点并且按下C/Num0键 才会执行这个事件
这个的局限就在于,一些移动的事件根本没法交互,坐标会乱套
如果要用事件的话该怎么写泥……脚本也行……





如果有会的请帮忙忙,蟹蟹

Lv1.梦旅人

梦石
0
星屑
65
在线时间
8 小时
注册时间
2024-2-8
帖子
3
2
 楼主| 发表于 2025-4-9 14:42:00 | 只看该作者
这一段是VA上关于摄像机判定的脚本
我翻来覆去改了半天,不是毫无变化就是报错
头疼qwq……
  1.   #--------------------------------------------------------------------------
  2.   # ● 画面中央的 X 坐标
  3.   #--------------------------------------------------------------------------
  4.   def center_x
  5.     (Graphics.width / 32 - 1) / 2.0
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● 画面中央的 Y 坐标
  9.   #--------------------------------------------------------------------------
  10.   def center_y
  11.     (Graphics.height / 32 - 1) / 2.0
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 设置显示位置为地图中央
  15.   #--------------------------------------------------------------------------
  16.   def center(x, y)
  17.     $game_map.set_display_pos(x - center_x, y - center_y)
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 移动到指定位置
  21.   #--------------------------------------------------------------------------
  22.   def moveto(x, y)
  23.     super
  24.     center(x, y)
  25.     make_encounter_count
  26.     vehicle.refresh if vehicle
  27.     @followers.synchronize(x, y, direction)
  28.   end
复制代码
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21687
在线时间
9420 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

3
发表于 2025-4-9 19:31:11 | 只看该作者
如果不需要1p 2p 同时可操作的话,
那直接切换到哪一个 p 就把玩家改到那一 p 所在的位置并把玩家的行走图修改成那一 p 的,
那就没那么多需要推翻的东西了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
8 小时
注册时间
2024-2-8
帖子
3
4
 楼主| 发表于 7 天前 | 只看该作者
喵呜喵5 发表于 2025-4-9 19:31
如果不需要1p 2p 同时可操作的话,
那直接切换到哪一个 p 就把玩家改到那一 p 所在的位置并把玩家的行走图 ...

其实还是需要的()
有一种非常简单粗暴的方法,就是把地图的尺寸设置成20*15,把玩家定在视野中央,让视野永远不会变化
但是地图太小了,所以不得不改一个视野转移至NPC脚本出来
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
38776
在线时间
5705 小时
注册时间
2006-11-10
帖子
6614
5
发表于 7 天前 | 只看该作者
本帖最后由 灯笼菜刀王 于 2025-4-12 16:38 编辑


▲是要这样的吧, 不过我这个是XP且被我魔改过,你是不能直接用我的方法做,自己改吧

镜头要跟随事件移动, 主要是game player的 update_scroll ,这个方法, 参考game player 的update 把它挪到game characterbase 里, 然后,搞个变量用来记录谁扛摄像头, 谁扛谁调用update_scroll即可

---建议分割线----------------------------------------------------

如果你只是固定在指定事件上,且用事件操作事件移动, 那大可把player透明+穿透, 同步到事件处,移动事件时一起移动player就行了,不需要去改造默认脚本(emm,可能要改一下player的按键移动)

另外, 你想做啥类型的游戏? 双人模式的话, 切换视角的玩法并不适合双人玩, 毕竟你跟随一方让另一方盲打不成?

要双人模式, 那视角设置有三种比较好

1,街机式, 这个视角是固定在两个player中间, 而两个player只能在屏幕范围内移动,  这种做法需要 改一下 valid? ,限定player的移动范围, 同时改变 update_scroll , 让其@real_x @real_y 取两个player的中间值, 算法嘛...自己想吧

2,分屏式, 这个做法是在scene map里再搞个@spriteset2,  然后在update里用另一个值来控制地图滚动, 当然视口之类的也要重新调整下(还有估计整个滚动算法都要重写,笑)

3,主次式, 即2P只能在1P周围活动, 那只要限制2P的移动范围就可以了,其他照旧,这个方法应该做简单吧, 笑

※免责声明,以上做法都是即时脑补的初级做法参考, 并没进行过任何实际操作, 请根据实际情况自己应对
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-4-19 13:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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