加入收藏 | 设为首页 | 会员中心 | 我要投稿 173173游戏网 (https://www.173173game.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 新闻中心 > 游戏攻略 > 正文

《泰拉瑞亚》饰品制作方法

发布时间:2014-02-18 23:32:17 所属栏目:游戏攻略 来源:游戏媒体
导读:【基础篇:饰品创建】一个mod道具需要有json文件和png文件嘛~png就不多说了,图片,不要找太大的就行了,反例请参见ctx的justasimpleboss里的BOSS召唤物mdash;mdash;骷髅下巴,因为直接用了骷髅下巴的图,太大,捡起来放在物品栏的时候缩得不成样子当

【猎奇+篇:控制法】

前方大量声明,注意

要控制火力嘛……不然会鬼畜不是吗?所以这里就能利用上前面说的读取键盘状态了

这里可以分为几类触发机制,以下用F键作为例子

0.特别说明

务必加上p.whoAmI==Main.myPlayer的判定,如果你不想自己按键时全图玩家都开始放弹幕,想象一下全图按键会发生什么

1.单发

原理是记录上一帧的F键状态,如果两个状态不同,代表按下(弹起)了F,键,就可以放弹幕了

具体:

using System;

using TAPI;

using Microsoft.Xna.Framework;

namespace TAPI.【MOD名称】{

  public class 【道具名称】:ModItem{

    public 【道具名称】(ModBase modbase,Item i):base(modbase,i){}

    bool oldF=false;

    public override void Effects(Player p){

      if(p.whoAmI==Main.myPlayer&&!oldF&&Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.F)){

        //这里面就是写前面发射子弹代码的地方

      }

      oldF=Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.F;

    }

  }

}

这种触发方式的频率是取决于按键速度的,也就是按得越快射♂得越快,理论射速峰值为30发每秒

2.连发

原理是添加一个计时变量,至于具体怎么计时就看个人喜好了,这里提供一种解决方案:

using System;

using TAPI;

using Microsoft.Xna.Framework;

namespace TAPI.【MOD名称】{

  public class 【道具名称】:ModItem{

    public 【道具名称】(ModBase modbase,Item i):base(modbase,i){}

    int timer=0;

    public override void Effects(Player p){

      if(timer>0)timer--;

      else{

        if(p.whoAmI==Main.myPlayer&&Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.F)){

          timer=10;

          //这里面就是写前面发射子弹代码的地方

        }

      }

    }

  }

}

按住F就可以连射了~示例为每秒触发6次的写法

3.自动

这里就略复杂了点,需要具有想象力以及数学功底,当然还有对于弹幕的热爱=w=

简单地来一个施放旋转镰刀的脚本吧~

using System;

using TAPI;

using Microsoft.Xna.Framework;

namespace TAPI.ctx{

 public class ctxbullet : ModItem{

  int timer = 0;

  float r = 0;

  float rv = 0;

  float ra = 0.001f;

  bool barrage = false;

  public ctxbullet(ModBase modbase, Item i) : base(modbase, i) { }

  public override void Effects(Player p){

   rv += ra;

   if (rv > 3) rv -= (float)Math.PI * 2f;

   r += rv;

   if (r > 3) r -= (float)Math.PI * 2f;

   timer++;

(编辑:173173游戏网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读