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


foreach(NPC n in Main.npc){
if(n.active&&!n.friendly&&new Rectangle((int)n.position.X,(int)n.position.Y,n.width,n.height).Intersects(new Rectangle((int)p.position.X-300,(int)p.position.Y-300,p.width+600,p.height+600))){
n.AddBuff(44,300);
}
}
6.3.效果图:

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

文章插图
BURN BABY,BURN!
嗯……本期教程就此结束 , 下期将是:【猎奇篇:读取操作】 , 如何用饰品给予玩家可控的额外火力 , 尽请期待~
附思考题:
如何做出十动然拒徽章的效果?(排除危险NPC和proj到安全距离以外)(neta自拥着转)
提示:
①proj对应的组是Main.projectile , proj的类型是Projectile
②proj和NPC一样有位置和宽高数据 , 位置可以被任意操作
③敌对NPC特征是friendly逻辑值为假 , 敌对proj特征是hostile逻辑值为真
【猎奇篇:读取操作】
前言:
其实这一篇严格地说并不是为增强火力而存在的;换句话说 , 它不只是为增强火力存在的 。
只要读取了电脑前玩家的操作 , 加上自定的一些代码 , 玩家就可以做到扩展整个人物的功能 , 就像K键召唤所有BOSS , F键瞬移 , 等等……
下面是正题:
1.读取玩家行动
读取玩家行动 , 其实只需熟记表示玩家状态的几个逻辑值 , 就能对玩家相应的行动做到加强或改变;平时需要用的基本就是这几条了:
controlLeft;控制向左
controlRight;控制向右
controlUp;控制向上
controlDown;控制向下
controlJump;控制跳
controlHook;控制钩子
例:如何做一个让玩家移动速度加快的饰品?
大体思路就是读取玩家按下的方向键 , 并相应地适当改变玩家速度 , 如下:
if (p.controlLeft)
{
if (p.velocity.X > 0) p.velocity.X *= 0.95f;
else if (p.velocity.X > -30) p.velocity.X -= p.velocity.Y == 0 ? 0.5f : 1f;
}
if (p.controlRight)
{
if (p.velocity.X < 0) p.velocity.X *= 0.95f;
else if (p.velocity.X < 30) p.velocity.X += p.velocity.Y == 0 ? 0.5f : 1f;
}
if (p.controlUp)
{
p.controlJump = true;
if (p.velocity.Y > 0) p.velocity.Y *= 0.95f;
else if (p.velocity.Y > -30) p.velocity.Y -= 1f;
}
以上的作用是:玩家控制向左时就增加向左速度 , 玩家控制向右就增加向右速度;将控制向上和控制跳跃绑定 , 控制向上就增加向上的速度
2.读取鼠标状态
游戏中自带显示鼠标状态的逻辑值 , Main.mouseLeft和Main.mouseRight分别表示鼠标左键和右键是否按下;相应的还有Main.mouseLeftRelease和Main.mouseRightRelease表示左右键是否未按下 , 可以理解为两者相反
思考题:如何制作按下鼠标右键就回血的饰品?运用前面的教程 , 题目较为简单 , 这里就不写示例了
3.读取键盘状态
Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.【按键代号】)
这个语句用来读取键盘状态 , 如果当前按下了指定【按键代号】的键就等于真;反之 , 假 。一般来说 , 提取字母键的状态只需把按键代号写成相应大写字母;F1-F12也是直接写大写F加数字就可以了
【猎奇+篇:辅助火力】
提示:这一篇将会有大量的英语和数学成分 , 不过LZ相信你们会比上学期英语倒10的LZ看得更明白的~
当然最开始还是喜闻乐见地分条讲解代码:
1.Projectile.NewProjectile(坐标X,坐标Y,速度X,速度Y,种类,伤害,击退,所属玩家,ai0,ai1)
字面意思 , 用来在世界里生成一个proj , 中心对准给定的坐标 , 速度为给定速度 , 种类、伤害、击退等等都是可以指定的 , 所属玩家一般写Main.myPlayer或者p.whoAmI(当自己被编号为p时)至于那个ai0和ai1 , 目前还不需要它们 , 在写的时候可以纯粹省略这两项 , 或者填0
这句话可以说是附加火力的核心 , 没有它一切都是免谈 , 想象一下 , 对准怪物按下鼠标 , 想让火球飞过去就飞火球 , 想飞激光就飞激光……
桥豆麻袋!电脑怎么知道你想让那个proj飞到哪里去?下面是一些有关确定速度方向的讲解:
①三角函数天才 , 或者平面向量万年挂科 , 请前往条目2

推荐阅读