gamemaker吧 关注:13,655贴子:95,214
  • 27回复贴,共1
求助

求助,评分表的制作

只看楼主收藏回复

目的:制作评分表,在玩家游戏结束后可查看评分
结果:在玩家失败后,会出现一张表,上面写着多少分
遇到的问题:已经做出来了分数,剩下的就是怎么在玩家失败后,数值显示在中间,之前是用拖拽做的,现在用的编程,不会做了
第一张为想要达到的结果
第二张是分数代码
第三张中间黄色部分为分值
其次是背景音乐的问题,根据gamemaker官方的教程,用了好几个函数,背景音乐都是无法播放,不知如何是好
求助大佬帮忙,非常感谢!




IP属地:河南来自Android客户端1楼2024-08-18 14:43回复
    能画出来的话剩下的无非就是调位置了,从代码来看你是理解参数意义的,那么就是研究视角对应“中间”该怎么算,加加减减就好,拼接字符串可以用加号,比如“score”+string(score变量),至于音乐问题,是mp3格式吗?使用了什么代码


    IP属地:吉林来自Android客户端2楼2024-08-19 02:06
    回复
      调位置这个能做到,想让玩家失败后,这个评分表自主出现,比方说设置个失败界面room-end,如果玩家在该房间,则评分表自动读取分值,并出现在变量中间,按enter后游戏重新开始
      主要疑惑的是读取变量,拖拽编程有个变量赋值,英文编程都不知道怎么写


      IP属地:河南来自Android客户端3楼2024-08-19 05:27
      回复
        背景音乐用的audio-play-sound(snd-1,0,0)
        想让玩家进入游戏后,背景音乐自动播放,在又是失败后终止背景音乐
        能理解snd参数,后面的两个0不知道什么意思


        IP属地:河南来自Android客户端4楼2024-08-19 05:38
        回复
          非常感谢大佬帮助


          IP属地:河南来自Android客户端5楼2024-08-19 05:39
          回复
            大佬,已经按你的描述调整了分数位置
            还有新问题
            1.黄色分数为关卡分数,希望他能在died界面消失,需要怎么操作呢?
            2.黄色部分和红色部分读取不一致,希望能读取的也是11这个分数值,关卡总结分数
            第二张为黄色部分,第三张为红色部分






            IP属地:河南来自Android客户端6楼2024-08-19 06:16
            回复
              0、分数的显示位置,从计算过程来看,水平方向是view坐标+整体宽度的一半来达到的中间,为什么竖直方向又改用view坐标+固定值了呢,明明用整体高度的一半就可以解决问题;
              1、audio_play_sound的第2个参数表示使用几号声音通道(可以把音乐音效等区分开以便分别调整音量),第3个参数表示“loop:是否循环播放”(0此时等价于false);
              2、从描述来看,音乐应该会在播放一次后停止(而不是完成一次游戏),除非题主在其他地方藏着声音相关的动作没说出来,建议的解决方案是BGM直接开启loop,但要小心一点不要让多个BGM同时播放(比如重开游戏时因为相关的初始化动作,第二次播放了BGM,但没有停掉原本在loop的);
              3、给变量赋值,在代码这边的写法就是非常简单直接的等号,比如a=1,也可以是一些计算式,比如a=a+1。其实问出这个问题就表明,你的obj_thescore绘制事件的代码不是自己写的;
              4、关于红色黄色两个分数取到不同值,描述有些混乱,建议整理一下变量的清单,明确一下每个变量发挥什么作用,每个显示分数应该取哪个变量,另外需要注意一下,score、health、lives这三个变量是GM默认设置的全局变量,不同实例引用到的是同一个,而没加global的自定义的变量是成员变量,两个不同的实例会拥有不同的值(自带变量x,y表示的坐标也是各实例不同的,至少说可以不同)


              IP属地:北京7楼2024-08-19 08:54
              回复

                就是这种效果


                IP属地:河南8楼2024-08-19 09:40
                回复
                  如果让咱来构建的话,咱会选择在同一个object里面实现两种分数的显示,因为只是一个分支选择:玩家存活就绘制黄色分数(在顶端),否则绘制红色分数(在中间)。代码层面也很容易实现:
                  if(存活){
                  黄色分数绘制;
                  }else{
                  红色分数绘制;
                  }
                  如果改用两个不同的object来实现的话,要处理的问题会多出好几个:
                  0、红色是一开始就存在的,还是game over时创建的,如果创建是由谁创建;
                  1、红色创建或者显示时,黄色是“暂停显示”还是“直接消除掉”;
                  2、数据由黄传给红……这是一个更复杂的机制,需要知道黄是否唯一、红是否由黄创建、红是用一次就消除还是一直存在,稍微有一点不满足限制条件的话就要知道id相关知识才能进行,甚至连id获取都可能存在困难;
                  变量赋值的补充,把6的值赋给a的写法是a=6,让a相对增加6的写法是a=a+6,让a变成原来6倍的做法是a=a*6,总之等号右边可以写任意合理的计算式,包括引用a的当前值,自由程度远不是一个“相对”能比的。


                  IP属地:北京9楼2024-08-19 10:01
                  回复
                    对呀,这个方向比原先的更轻松


                    IP属地:河南来自Android客户端10楼2024-08-19 10:05
                    回复
                      感谢大佬指点,我这就改


                      IP属地:河南来自Android客户端11楼2024-08-19 10:06
                      回复
                        豆姐把代码方面讲了,我没咋用gms2就来讲讲变量吧,gm的变量我姑且分为一般变量,系统变量,全局变量,系统变量就是预设的score啊life这些,不建议用。


                        而变量,你使用的拖拽本质上可以等价于“变量名=值”的代码,值得注意的是变量是跟随实例的,也就是你在小明的创造事件写hp等于1,那么游戏里面你创造一百万个小明他们就有各自的一百万个hp,这些hp互相独立于个体,你要在小明二号上获得小明一号的hp就必须要声明变量的主人,也就是“小明一号.hp”,当然在实际游戏中不会有小明一号这个东西,他是一个有【id】的【小明】实例,你要使用他的id去代表这个小明一号,这时候你就会发现这是很麻烦的,因为小明一号可能待会死了,但是他身上还有一个变量我需要呢,或者你还不会id压根找不到小明一号,就很难使用“主人.变量”的格式来获得,这时候就可以使用全局变量“global.变量”,这种变量一旦声明,所有实例都可以访问并且不再需要跟上前缀(我个人喜欢带上)而且持续存在,就很适合用来制作分数这种东西,哪怕跨越了房间,声明的个体销毁了,也任然可以访问


                        IP属地:吉林来自Android客户端13楼2024-08-19 13:06
                        回复
                          甚至,如果你想,可以再前进一步:
                          首先,定义一个变量,比如叫dtime表示gameover以后的时间,一开始(以及每次重新游戏时)把值重置到0,gameover开始就一直增加,直到100。分数的绘制基于这个dtime发生改变。x坐标两个都是中间,不用改。y坐标是顶端坐标×dtime/100+中心坐标×(100-dtime)/100。这样的话gameover发生时分数不是“立刻跳到屏幕中间”,而是“从顶端移动过来”。
                          两边的you lose透明度,分数的颜色变化也可以按这个方式来做。
                          再前进的话,就是把线性移动改成“开头快、结尾慢”的方式移动。
                          以及,不是用draw text,而是用sprite纹理表示数字。
                          反正,只要想,能做出改变还有很多(只是咱一时没想起其他的)。


                          IP属地:北京14楼2024-08-19 13:17
                          回复
                            感谢,问题已经解决了,还学到了新东西


                            IP属地:河南15楼2024-08-20 05:55
                            回复