上一页 1 ··· 8 9 10 11 12

2012年2月28日

摘要: AntInventoryManager是装备管理栏,在这里管理武器创建工作。 先处理一个函数OwnerDied(),这是处理玩家死亡时,手上的武器是否存在。将他写空将不会让手上的武器消失。 记着在AntPlayerController中的possess处调用了AntPlayer(pawn).CreateInventoryManagerFromTemplate();来将武器栏创建给pawn 这里将声明其函数该函数的返回类型为Inventory function Inventory CreateInventoryFromTemplate(Actor InventoryActorTe... 阅读全文

posted @ 2012-02-28 18:14 neocsl 阅读(299) 评论(0) 推荐(0) 编辑

2012年2月27日

摘要: DarkElf是远战敌人,该敌人能射出一支箭从而对玩家产生伤害。在执行装箭动画的过程中动态的让箭创建出来并连接到手的插槽上。 动画情况是这样:DarkElf从后背拿出一支箭,这时候动态生成该箭的模型,当在MeleeSwingEnd的时候(预备实际发出射弹的时候将该Component销毁) 有两个重要的函数Mesh.DetachComponent(component);//将一个组件从模型上剔除 Mesh.AttachComponentToSocket(component,socket); //将一个组件连接到一个插槽上 var name ProjectileSocketName; ... 阅读全文

posted @ 2012-02-27 17:48 neocsl 阅读(549) 评论(0) 推荐(0) 编辑

2012年2月26日

摘要: Goblin是一个近战攻击的敌人,该敌人挥舞自己的棒子思密达,棒子上有一个插槽,再执行动画的时候有一个Script notify跟踪这个插槽的位置判定是否能打到主角。 既然要获取插槽的位置就得写一个方法来获取 var name MeleeSwingSocketName; function vector GetMeleeSwingSocketLocationAndRotation() { local vector MeleeSwingLocation; //存储获取插槽的位置 local rotator MeleeSwingRotation; Mesh.Ge... 阅读全文

posted @ 2012-02-26 18:05 neocsl 阅读(342) 评论(0) 推荐(0) 编辑

2012年2月25日

摘要: 紧接着Enemy将要查看EnemyController,EnemyController继承自AIController。 一个典型方法让敌人找到玩家 var Pawn Enemy; event Tick(float DeltaTime) { local PlayerController PC; if(Enemy==none) { Foreach LocalPlayerControllers(class'PlayerController',pC) { if(PC.Pawn!=none) Enemy=PC.Pawn; } } ... 阅读全文

posted @ 2012-02-25 15:00 neocsl 阅读(615) 评论(0) 推荐(0) 编辑

摘要: Enemy也是继承自pawn。先从PostBeginPlay中说起,首先得为Enemy创建一个Controller,这里当然要从PostBeginPlay中调用了。官方提供了SpawnDefautlControllerevent PostBeginPlay(){ super.PostBeginPlay(); if(Controller==none) { SpawnDefaultController(); }}function SpawnDefaultController(){ if(AIControllerTemplate!=none) Spawn(AIControll... 阅读全文

posted @ 2012-02-25 02:50 neocsl 阅读(422) 评论(0) 推荐(0) 编辑

2012年2月24日

摘要: 玩家具备一个替换武器的功能,基本方法就是销毁前一个武器创建一个预期的新武器。function SwapWeaponFor(AntWeapon WeaponTemplate){ if(Weapon!=none) Weapon.LifeSpan=-1; Invmanger.RemoveFromInventory(Weapon); if(weaponTemplate!=none) CreateInventoryFromtemplate(WeaponTemplate);}将武器的生命周期设为-1,同时从模板中将其清空。skelControlLookAt骨骼观察... 阅读全文

posted @ 2012-02-24 15:49 neocsl 阅读(471) 评论(0) 推荐(0) 编辑

2012年2月23日

摘要: 分析了PlayerController自然而然就得研究Pawn了,第一步研究的pawn是基础pawn,通过该pawn要继承以后的PlayerPawn和EnemyPawn。在研究该pawn的过程中应该学会动画树的混合AnimTree Blend甚至于节点的重新书写。地牢守卫者的作者重写了一个DunDefAnimNodeScaleRateBySpeed节点。我并不操心他写的内容,我也暂时不用重写自己的动画节点。 做一个动画树实例:var array<name> CustomAnimNames;var AnimNodePlayCustomAnim CustomAnimNode;simul 阅读全文

posted @ 2012-02-23 22:41 neocsl 阅读(568) 评论(0) 推荐(0) 编辑

摘要: UDK中有强大的Archetype机制,因此利用该机制spawn一个敌人template将与传统的方式有所不同。比如以下的代码spawn一个template:exec function SpawnEnemy(){ local AntEnemy AntEnemyTemplate; AntEnemyTemplate=AntEnemy(DynamicLoadObject(Archetype.AntEnemy,class'AntEnemy')); //LoadObject 在主机平台不适用,iphone不知道 Spawn(class'AntEnem... 阅读全文

posted @ 2012-02-23 18:02 neocsl 阅读(902) 评论(0) 推荐(0) 编辑

2012年2月22日

摘要: 最近要着手开发一款塔防游戏,之前还没有过塔防类型游戏开发经验。因此从开源的《地牢守卫者》代码研究。 《地牢守卫者》的制作人写了一组博客对其源码进行了大概阐述。我在这里先进行解读。 地牢守卫者是一款虚幻引擎开发的游戏,代码主要由unrealscript书写。为了方便观察源码,我使用了UnCodeX来进行观察。 GameInfo中进行了pawn和controller的生成,作者使用了UpdateViewTarget改变摄像机视角,我将会使用controller中的GetPlayerViewPoint函数进行视角的改变。同时提到了使用RinterTo和VinterpTO来进行插值。 ... 阅读全文

posted @ 2012-02-22 23:22 neocsl 阅读(999) 评论(0) 推荐(0) 编辑

上一页 1 ··· 8 9 10 11 12