《泰拉瑞亚》饰品制作方法
【猎奇+篇:控制法】 前方大量声明,注意 要控制火力嘛……不然会鬼畜不是吗?所以这里就能利用上前面说的读取键盘状态了 这里可以分为几类触发机制,以下用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游戏网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |