五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

斯坦福UE4C++課程P17-P22調(diào)試工具

2022-10-26 22:04 作者:_Hide-on-bush_  | 我要投稿

這一章主要是說作業(yè)和debug工具

作業(yè)一中,我們使用以下方式讓MeshComp和OnActorHit綁定。

如果不重寫ASExplosiveBarrel::PostInitializeComponents(),而是在構(gòu)造函數(shù)里使用

用熱重載編譯可能會(huì)出現(xiàn)問題。

tip:PostInitializeComponents運(yùn)行在構(gòu)造函數(shù)之后,BeginPlay之前。

使用熱重載,可能有如下問題:

  1. 無法編譯,就算代碼正確

  2. 熱重載崩潰了

  3. 告訴我們編譯完成,但沒有重載變化的代碼

以下是C++實(shí)現(xiàn)的爆炸桶代碼:

SExplosiveBarrel.h

SExplosiveBarrel.cpp

UE_LOG(CategoryName, Verbosity, Format)宏用于輸出信息到日志;

TEXT()宏把在里面輸入的字符串字面值轉(zhuǎn)換為ue期望的形式,并且使用更廣泛的字符集。所以字符串最好都加上該宏。

以下方式把撞擊的位置信息輸出到屏幕:

下面介紹添加斷點(diǎn),作者用的VS,點(diǎn)擊代碼界面左側(cè)添加斷點(diǎn),運(yùn)行到斷點(diǎn)時(shí)暫停,然后逐語句執(zhí)行(F10step over跳下一個(gè)),和常規(guī)C++調(diào)試基本一致,我用的Rider設(shè)置的VS快捷鍵,操作一致。

接下來是在藍(lán)圖中添加斷點(diǎn),選擇某個(gè)節(jié)點(diǎn)右鍵Toggle breakpoint(F9)添加斷點(diǎn),然后選項(xiàng)卡里都有以上類似debug功能。

接下來我們讓相機(jī)平移,不讓角色擋住魔法球發(fā)射的位置(準(zhǔn)星)

我們可以直接拖動(dòng)相機(jī),但是彈簧臂還在原來位置,所以不能直接拖

我們選中彈簧臂組件,調(diào)節(jié)Socket offset讓彈簧臂和相機(jī)一起移動(dòng)即可。

接下來用空控件藍(lán)圖做一個(gè)準(zhǔn)星Crosshair_Widget,添加一個(gè)image,錨點(diǎn)設(shè)置為中央,位置設(shè)置為x=0,y=0,尺寸為8×8,alignment設(shè)置為0.5,0.5。

在角色藍(lán)圖中把準(zhǔn)星顯示在視口中。

現(xiàn)在我們發(fā)射魔法球,當(dāng)右手接近屏幕中央時(shí),魔法球會(huì)以正確的方向射出,但角色轉(zhuǎn)個(gè)身讓右手遠(yuǎn)離中央時(shí),魔法球會(huì)偏離很遠(yuǎn)。

作業(yè)2(1/3),用C++解決上面的問題。

首先提示我們用藍(lán)圖如何實(shí)現(xiàn):

在ProjectileCannon藍(lán)圖添加以下節(jié)點(diǎn),意思是獲取玩家和炮的位置,玩家位置向量減去炮位置向量得到的是炮指向玩家的向量,然后設(shè)置魔法球發(fā)射的方向旋轉(zhuǎn)到前者的的方向。

根據(jù)以上提示,我們可以讓魔法球發(fā)射的方向旋轉(zhuǎn)到從相機(jī)中心(準(zhǔn)星)發(fā)射碰撞檢測(cè)射線所碰到的第一個(gè)物體上的碰撞點(diǎn)(若無碰撞說明無限遠(yuǎn),直接用前面的發(fā)射方向),在角色C++類PrimaryAttack函數(shù)中添加代碼(可借鑒SInteractionComponent類的射線碰撞檢測(cè)方法):

我們用攝像機(jī)正前方發(fā)出射線1000米的范圍內(nèi)檢測(cè)是否有以下三種類型物體碰撞(WorldDynamic,WorldStatic,PhysicsBody,因?yàn)槟壳皥?chǎng)景中除了魔法球的Projectile碰撞配置外只有這三種)

效果如下:

作業(yè)2(2/3)Blackhole Projectile黑洞發(fā)射物藍(lán)圖實(shí)現(xiàn)

首先在C++里為發(fā)射黑洞綁定動(dòng)作,發(fā)射邏輯和MagicProjectile一致(有攻擊發(fā)射的Actor和攻擊動(dòng)畫被顯示在藍(lán)圖中)。

然后創(chuàng)建能被黑洞吸引的模擬物藍(lán)圖(先在角色藍(lán)圖把blackhole下的類選為模擬物類,動(dòng)畫設(shè)為攻擊動(dòng)畫),注意徑向力組件的force要大一點(diǎn)(我設(shè)的-1500000),否則影響輕微

作業(yè)2(3/3)Dash Ability C++實(shí)現(xiàn)

實(shí)現(xiàn)按Q發(fā)射一個(gè)魔法球,飛行0.2秒后(或者提前碰到物體)爆炸,爆炸后0.2秒,角色傳送到爆炸的位置。

這里告訴我們可以做一個(gè)共享的類,讓左鍵攻擊魔法球、Q傳送魔法球、黑洞都繼承自一個(gè)類(因?yàn)樗鼈冇写罅恐貜?fù)代碼、組件)。

我們做了共享類,然后用藍(lán)圖實(shí)現(xiàn)0.2秒傳送效果。

上半部分是飛行0.2秒傳送,下半部分是提前發(fā)生碰撞傳送。

最后是ensure/ensureAlways宏,前者第一次被執(zhí)行時(shí)會(huì)中斷運(yùn)行到當(dāng)前位置,后者每次執(zhí)行都會(huì)中斷運(yùn)行到當(dāng)前位置,因?yàn)榫幾g器認(rèn)為此宏處出現(xiàn)了一個(gè)問題。這類似C的主動(dòng)檢測(cè)錯(cuò)誤的assert斷言。

值得注意的是,該宏在游戲打包后會(huì)自動(dòng)刪除,并不會(huì)影響正常游戲。

斯坦福UE4C++課程P17-P22調(diào)試工具的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
万山特区| 金塔县| 邮箱| 商南县| 太保市| 宁夏| 当阳市| 泊头市| 大宁县| 行唐县| 墨玉县| 瑞安市| 江城| 达孜县| 犍为县| 清远市| 永新县| 驻马店市| 定安县| 泌阳县| 高青县| 通城县| 龙江县| 逊克县| 鄂尔多斯市| 德江县| 龙岩市| 宝山区| 诸暨市| 阳曲县| 泸定县| 乡宁县| 益阳市| 南开区| 津市市| 焉耆| 威远县| 天津市| 万安县| 安国市| 漳平市|