收藏本站

當前位置:首頁 / 游戲庫 / 泰拉瑞亞

泰拉瑞拉飾品制作方法

時間:2014-02-18 16:36:04 來源:k73電玩之家 作者:小新 熱度: 134

《泰拉瑞拉》的飾品制作方法其實還是有一些麻煩的,玩家們初上手制作可能會遇到一些困難,不過我想這些都不是玩家們想要制作飾品的阻礙,希望以下的飾品的制作方法,可以讓玩家們在這款游戲中可以獲得更多的樂趣。

6.3.效果圖:

泰拉瑞拉飾品制作方法

BURN BABY,BURN!

嗯……本期教程就此結束,下期將是:【獵奇篇:讀取操作】,如何用飾品給予玩家可控的額外火力,盡請期待~

附思考題:

如何做出十動然拒徽章的效果?(排除危險NPC和proj到安全距離以外)(neta自擁著轉)

提示:

①proj對應的組是Main.projectile,proj的類型是Projectile

②proj和NPC一樣有位置和寬高數(shù)據(jù),位置可以被任意操作

③敵對NPC特征是friendly邏輯值為假,敵對proj特征是hostile邏輯值為真

【獵奇篇:讀取操作】

前言:

其實這一篇嚴格地說并不是為增強火力而存在的;換句話說,它不只是為增強火力存在的。

只要讀取了電腦前玩家的操作,加上自定的一些代碼,玩家就可以做到擴展整個人物的功能,就像K鍵召喚所有BOSS,F(xiàn)鍵瞬移,等等……

下面是正題:

1.讀取玩家行動

讀取玩家行動,其實只需熟記表示玩家狀態(tài)的幾個邏輯值,就能對玩家相應的行動做到加強或改變;平時需要用的基本就是這幾條了:

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.讀取鼠標狀態(tài)

游戲中自帶顯示鼠標狀態(tài)的邏輯值,Main.mouseLeft和Main.mouseRight分別表示鼠標左鍵和右鍵是否按下;相應的還有Main.mouseLeftRelease和Main.mouseRightRelease表示左右鍵是否未按下,可以理解為兩者相反

思考題:如何制作按下鼠標右鍵就回血的飾品?運用前面的教程,題目較為簡單,這里就不寫示例了

3.讀取鍵盤狀態(tài)

Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.【按鍵代號】)

這個語句用來讀取鍵盤狀態(tài),如果當前按下了指定【按鍵代號】的鍵就等于真;反之,假。一般來說,提取字母鍵的狀態(tài)只需把按鍵代號寫成相應大寫字母;F1-F12也是直接寫大寫F加數(shù)字就可以了

【獵奇+篇:輔助火力】

提示:這一篇將會有大量的英語和數(shù)學成分,不過LZ相信你們會比上學期英語倒10的LZ看得更明白的~

當然最開始還是喜聞樂見地分條講解代碼:

1.Projectile.NewProjectile(坐標X,坐標Y,速度X,速度Y,種類,傷害,擊退,所屬玩家,ai0,ai1)

字面意思,用來在世界里生成一個proj,中心對準給定的坐標,速度為給定速度,種類、傷害、擊退等等都是可以指定的,所屬玩家一般寫Main.myPlayer或者p.whoAmI(當自己被編號為p時)至于那個ai0和ai1,目前還不需要它們,在寫的時候可以純粹省略這兩項,或者填0

這句話可以說是附加火力的核心,沒有它一切都是免談,想象一下,對準怪物按下鼠標,想讓火球飛過去就飛火球,想飛激光就飛激光……

橋豆麻袋!電腦怎么知道你想讓那個proj飛到哪里去?下面是一些有關確定速度方向的講解:

①三角函數(shù)天才,或者平面向量萬年掛科,請前往條目2

②平面向量學霸或者痛恨三角函數(shù),請前往條目3

1.1.先確定自己和鼠標的位置吧~

Vector2 pc=p.position+new Vector2(p.width,p.height)/2;

Vector2 mc=Main.screenPosition+new Vector2(Main.mouseX,Main.mouseY);

2.Math.Atan2(對邊,斜邊)

兩個向量作差,得到了什么?向量?錯!是直角三角形!

float r=(float)Math.Atan2(mc.Y-pc.Y,mc.X-pc.X);

(這個函數(shù)是反正切,又不是反正切,因為它的對邊和斜邊隨便哪個取0都是可以輸出結果的;而且它的值域是2π,也就是一圈!)

接下來,Vector2 v=new Vector2((float)Math.Cos(r),(float)Math.Sin(r));

這就是單位長度,方向從玩家中心指向鼠標的速度向量

3.Vector2.Distance(向量1,向量2)

這個語句是用來求兩個向量距離的,同樣的效果也可以用求向量長度的語句((向量1-向量2).Length())來實現(xiàn)

Q:沒事求向量長度干啥?

A:向量除以長度等于單位向量

也就是:Vector2 v=(mc-pc)/Vector2.Distance(mc,pc);

一發(fā)♂入魂的單位向量~

下面就可以組裝起來了:

Vector2 pc=p.position+new Vector2(p.width,p.height)/2;

Vector2 mc=Main.screenPosition+new Vector2(Main.mouseX,Main.mouseY);

Vector2 v=(mc-pc)/Vector2.Distance(mc,pc);

Projectile.NewProjectile(pc.X,pc.Y,v.X*6,v.Y*6,255,50,0,p.whoAmI);

示例中為使用單位向量法,速度大小為6,傷害為50,無擊退的磁球激光

直接寫進去?不不不那樣會鬼畜的,激光還好,如果寫的是雷♂管之類的和諧物品的話,想象一下每秒60個雷♂管不受控制地射出去的景象……

相關導航

泰拉瑞亞

泰拉瑞亞

游戲平臺:3DSPSVPS3Xbox360

游戲類型:動作冒險沙盒開放

發(fā)售日期:2017-1-9 全部版本發(fā)售日
PSV美版:2013-12-17
PC中文版:2015-7-9
PS3日版:2013-11-5
Xbox360歐版:2013-3-27
Xbox One美版:2014-11-14
3DS, New 3DS美版:2016-2-23
3DS, New 3DS歐版:2016-2-12
3DS, New 3DS中文版:2015-12-21
Android, iOS中文版:2024-5-1
WIIU美版:2016-4-12
WIIU歐版:2016-4-12
PC中文版:2011-5-17
PC, Android, iOS中文版:2017-1-9

游戲版本:日版美版歐版中文版

游戲標簽:游戲推薦經(jīng)典游戲好玩的游戲游戲排行榜

84

總分 玩家評分:40 k73評分:44
畫面:8
劇情:8
系統(tǒng):8
音樂:8
耐玩:8

收藏本站 | 聯(lián)系我們 | 發(fā)展歷程 | 版權聲明 | 下載幫助 | 廣告服務 | 軟件提交 | 意見反饋

Copyright 2008-2020 破解游戲排行榜 版權所有 鄂ICP備17000873號

k73所有游戲及軟件下載資源均來源自互聯(lián)網(wǎng),并由網(wǎng)友上傳分享。如有侵權,請來電來函告之。

k73手游