泰拉瑞拉飾品制作方法
時間:2014-02-18 16:36:04 來源:k73電玩之家 作者:小新 熱度: 134 次
《泰拉瑞拉》的飾品制作方法其實還是有一些麻煩的,玩家們初上手制作可能會遇到一些困難,不過我想這些都不是玩家們想要制作飾品的阻礙,希望以下的飾品的制作方法,可以讓玩家們在這款游戲中可以獲得更多的樂趣。
【DEBUG-查錯階段】
首先是同時掛上蒸汽朋克翅膀、火焰粒子以及星星gore的照片一張
這里需要注意一點:cs開頭的using應(yīng)該是using Microsoft.Xna.Framework;
也就是說,模板應(yīng)該是如下:
using System;
using TAPI;
using Microsoft.Xna.Framework;
namespace TAPI.【MOD名稱】{
public class 【道具名稱】:ModItem{
public 【道具名稱】(ModBase modbase,Item i):base(modbase,i){}
public override void Effects(Player p){
//等會就是在這里插入飾品信息滴~
}
}
}
這篇主要講述的是運用TR原版的一些方法組來答到寓守于攻、不戰(zhàn)而退敵的效果
首先……先介紹一些需要用到的代碼
1.Rectangle(組詞法:rect是“四”,angle是“角”,四個墻角即為矩形~)
要想快速而方便地判定范圍,首先要在TR里表示一個矩形(Rectangle)。
TR里聲明一個矩形的方法是使用new方法組,也就是new Rectangle(坐標X,坐標Y,寬,高)
舉例:new Rectangle(100,200,300,400)表示的是如下圖的矩形:
左上頂點坐標(100,200),長300寬400,右下頂點坐標(100+300,200+400),表示的是一個范圍(嗯沒錯那個就是66ccff)
注:矩形的坐標和長寬必須是整數(shù),在使用到玩家或npc坐標的地方請在前面加個(int),表示取整
2.Rectangle.Intersects(Rectangle r1,Rectangle r2)
intersects方法組,隸屬于xna特有的數(shù)學(xué)系(重申一遍前面cs格式的.Graphics一定要刪掉?。?,用來判定兩個矩形是否相交,輸出邏輯值(真或假)
p.s.判定是否在范圍內(nèi)時好像比直接計算距離略快一點,缺點就是判定是方的不好看
……嘛,戰(zhàn)斗時誰還管好不好看呢?
3.foreach(類型 代號 in 組)
就像這個語句的名字一樣,它可以把某個組里的所有東西都拉出來給一個代號,比如foreach(NPC n in Main.npc)就是檢索游戲中所有NPC并給每個NPC起個名字:n;接下來這個n將要受到什么代碼的操(rou)作(lin),就完全是個人喜好的問題了
4.NPC.AddBuff(int BUFF類型,int BUFF持續(xù)時間)
是時候讓那些可惡的怪物們嘗嘗FFF團的怒火了!有了這個方法組,給NPC隨意加debuff將不是夢想!
·BUFF類型就是想要加的BUFF的編號,比如燃燒是24,詛咒燃燒是39,霜火燃燒是44,等等
·BUFF持續(xù)時間是按幀算的,60幀=1秒(0處理落率),如果這里寫60就是一秒,寫3600是一分鐘,寫23333333就是約4.50102874天,依據(jù)自己需求來決定時間吧
5.if(條件)
直譯:如果滿足條件就執(zhí)行后面的內(nèi)容,條件應(yīng)為邏輯值
5.2.else
“否則”是“如果”的好姬友,用于在if的條件不成立時執(zhí)行后面的語句
5.2.1.多層判定
那啥……else后面也能跟if,所以如果多重判定就可以寫成:
if(條件1){代碼段1}
else if(條件2){代碼段2}
else if(條件3){代碼段3}
else……
……
……else{都不滿足時的代碼段}
5.2.邏輯值的運算
如果需要同時判定多個條件成立,幾個條件就套上幾個if?如果需要多個條件任一成立,幾個條件就寫幾個else,然后在里面寫相同語句?乃們out了!其實許多條件也是可以合并成一個條件的
需要用到的就是邏輯運算符:且(&&)、或(||)和非(!)
且就是數(shù)字7上面那個符號打兩遍,或就是右shift上面那個按鍵+shift打出來的(絕對值括號),非就是感嘆號(全都是半角)
且和或用于連接兩個邏輯值,放于兩個邏輯值之間;非放在一個邏輯值的前面,用于否定這個邏輯值(真假顛倒)
5.2.1.幾個邏輯運算的法則
1.!!a就是a
2.!(a&&b)就是(!a)||(!b)
3.!(a||b)就是(!a)&&(!b)
例題1:輸出一個邏輯值M,在a和b同時不成立的前提下要求滿足以下三點中任意兩點便成立:①b和c任一成立②d和e同時成立③f成立
解1:M=(!a)&&(!b)&&(((b||c)&&d&&e)||(f&&d&&e)||((b||c)&&f))
評價:簡單粗♂暴,適用于對多重括號很熟練的兄貴們
解2:int m=0;
if(b||c)m++;
if(d&&e)m++;
if(f)m++;
M=(!(a||b))&&(m>=2)
評價:略運用了化簡的技巧,適用于懶♂的兄貴們
6.反擊時刻!
現(xiàn)在讓我們把這四條組成一個給附近300像素以內(nèi)NPC上霜火debuff的效果吧~
6.1.思路(伸手黨可以跳過這一段直接復(fù)制后方的成品,感興趣的還是看一下吧~)
先遍歷所有NPC記作n:foreach(NPC n in Main.npc)
操♂作開始,首先是確定范圍:
NPC所在的矩形是new Rectangle((int)n.position.X,(int)n.position.Y,n.width,n.height)
玩家上下左右300像素的矩形是new Rectangle((int)p.position.X-300,(int)p.position.Y-300,p.width+600,p.height+600)
接下來是判定相交同時確保n還活著,而且是敵對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)))
最后嘛……嘗嘗來自北國的FFF團精神吧!
n.AddBuff(44,300);
6.2.成品代碼:
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);
}
}
我要評論 查看全部評論 (0)>>