泰拉瑞拉飾品制作方法
時(shí)間:2014-02-18 16:36:04 來源:k73電玩之家 作者:小新 熱度: 134 次
《泰拉瑞拉》的飾品制作方法其實(shí)還是有一些麻煩的,玩家們初上手制作可能會(huì)遇到一些困難,不過我想這些都不是玩家們想要制作飾品的阻礙,希望以下的飾品的制作方法,可以讓玩家們?cè)谶@款游戲中可以獲得更多的樂趣。
【獵奇+篇:控制法】
前方大量聲明,注意
要控制火力嘛……不然會(huì)鬼畜不是嗎?所以這里就能利用上前面說的讀取鍵盤狀態(tài)了
這里可以分為幾類觸發(fā)機(jī)制,以下用F鍵作為例子
0.特別說明
務(wù)必加上p.whoAmI==Main.myPlayer的判定,如果你不想自己按鍵時(shí)全圖玩家都開始放彈幕,想象一下全圖按鍵會(huì)發(fā)生什么
1.單發(fā)
原理是記錄上一幀的F鍵狀態(tài),如果兩個(gè)狀態(tài)不同,代表按下(彈起)了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)){
//這里面就是寫前面發(fā)射子彈代碼的地方
}
oldF=Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.F;
}
}
}
這種觸發(fā)方式的頻率是取決于按鍵速度的,也就是按得越快射♂得越快,理論射速峰值為30發(fā)每秒
2.連發(fā)
原理是添加一個(gè)計(jì)時(shí)變量,至于具體怎么計(jì)時(shí)就看個(gè)人喜好了,這里提供一種解決方案:
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ā)射子彈代碼的地方
}
}
}
}
}
按住F就可以連射了~示例為每秒觸發(fā)6次的寫法
3.自動(dòng)
這里就略復(fù)雜了點(diǎn),需要具有想象力以及數(shù)學(xué)功底,當(dāng)然還有對(duì)于彈幕的熱愛=w=
簡(jiǎn)單地來一個(gè)施放旋轉(zhuǎn)鐮刀的腳本吧~
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++;
if (timer > 3) timer -= 3;
if (barrage){
if (p.statMana < 3 || p.whoAmI != Main.myPlayer){
barrage = false;
goto outOfMana;
}
else p.statMana -= 3;
if (timer % 3 == 0){
Vector2 pc = p.position + new Vector2(p.width, p.height) / 2;
Vector2 v = new Vector2((float)Math.Cos(r), (float)Math.Sin(r));
Projectile.NewProjectile(pc.X, pc.Y, v.X * 20f, v.Y * 20f, 274, 100, 0, p.whoAmI);
Projectile.NewProjectile(pc.X, pc.Y, -v.X * 20f, -v.Y * 20f, 274, 100, 0, p.whoAmI);
}
}
outOfMana:
if (Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.F)) barrage = !barrage;
}
}
}
因?yàn)樾枰烙^,就多定義了幾個(gè)角度增速,角度加速度,角度急動(dòng)度,角度痙攣度神馬的……
效果圖:
(所以說彈幕可以培養(yǎng)數(shù)學(xué)和想象力=w=)
當(dāng)然,自動(dòng)類彈幕的形式是非常多的,從上文簡(jiǎn)單的噴環(huán)環(huán),到折返射、西行寺無余涅盤、夢(mèng)想天生、原子崩壞、金剛槍破,等等……只要看懂彈幕的組成,tAPI就能寫出來!
嘛……作為飾品部分的教程基本已經(jīng)結(jié)束了,從道具json的創(chuàng)建一直到在cs里聲明和操作變量,基本現(xiàn)在已經(jīng)可以復(fù)原所有原版飾品的效果了,玩家們也能首夜裸裝站擼機(jī)械三王了
我要評(píng)論 查看全部評(píng)論 (0)>>