gamemaker吧 关注:13,647贴子:95,104
  • 5回复贴,共1

如果做到这种效果

只看楼主收藏回复

我打怪,怪的头顶会出现伤害值。如果我用draw_text写伤害的话,字会不漂亮。我想把字转换成精灵像这样

要怎么做到呢


1楼2020-09-01 18:36回复
    根据截图推测lz是想给字描边效果。有以下几种可能的方案:
    1. 绘制黑色的数字之前,先用白色在目标坐标上下左右差1个像素的位置各绘制一遍数字,再用黑色在目标坐标绘制一次,即可得到类似白色描边。优点:简单,工作量小。缺点:由于每个数字进行了5遍绘制,运行效率低。
    2. 使用着色器。优点:综合工作量和性能上都优秀。缺点:难度高。
    3. 如你截图所示方法,创建精灵并为每个数字添加子图像,添加描边效果。之后可以直接用draw_sprite绘制,或者用font_add_sprite加载为字体后draw_text。其中后者未测试过,不知道效果。优点:直观,效果稳定。缺点:手动创建精灵工作量大。
    4. 回答1楼问题:如何快速把字体“转换”成精灵?思路:在游戏中创建一个surface,在其上每隔等距绘制一个数字,以后surface_save保存为png图像,再到精灵编辑器中作为长条精灵导入。


    IP属地:上海来自Android客户端2楼2020-09-01 19:23
    收起回复
      我写了一个,就是把普通数值转换为相应的图片精灵输出,亲测有效。
      script my_draw_init
      var my_x,my_y,my_int,my_str,my_len,i;
      my_x=argument0
      my_y=argument1
      my_int=argument2
      my_str=string(my_int);//数值转为字符串
      my_len=string_length(my_str);//获取字符串长度
      for(i=0;i<my_len;i+=1)//循环
      {
      draw_sprite(sprite0,real(string_copy(my_str,i+1,1)),my_x+i*40,my_y)//画出对应位置的对应子精灵图,40为精灵图宽度
      }
      然后在需要引用的对象的绘制事件中写入以下代码:
      my_draw_int(10,10,1234)
      my_draw_int(300,200,1027)
      my_draw_int(400,400,11533)
      下图是执行结果:


      IP属地:河南3楼2020-09-02 07:20
      收起回复
        最好当然是自己制作的字符图像了,这样方便以后的修改。对了,不需要一帧一字,全放一起都可以。
        至于绘制,先转换成字符串,然后从左往右一个个绘制即可。我写过自制的中文脚本,也是这么一个过程。


        IP属地:江苏来自Android客户端4楼2020-09-02 12:52
        回复