您的位置:首页 > 移动开发 > Unity3D

【Unity3D自学记录】 Unity3D游戏开发之键盘选取、切换目标

2014-07-02 16:06 309 查看
▇ 知识点

GameObject.FindObjectsWithTag:获取带有指定Tag的多个游戏物体;

Input.GetKeyDown:检测指定按键是否按下;

(GameObject instance).renderer.material.color:修改这个参数使得对象的颜色变动,让目标是否选中效果更明显;

(GameObject instance).enabled:修改这个值使得对象是否可用/可见;

▇ 思路

新建一个叫做Enemy的Tag,并设置到所有怪物上,我这里暂时只用Cube代替;

新建一个Creature脚本,使其拥有单位名称、等级、生命、能量等属性,并附加给所有怪物后调整属性;

新建一个Targeting脚本,附加到First Person Controller上,让玩家拥有选取目标的能力;

在Targeting的Start方法中,用获取所有的敌人单位,维护到一个List中;

在Targeting中,建立一个Creature成员变量,用来表示当前选中的目标生物;

在Targeting的Update方法中,检测玩家按键,Tab用来选取下一个目标,Esc用来取消当前选中目标;

用NGUI新建一个当前目标框体,并用脚本来显示当前目标的属性,当没有选择目标的时候,把目标框体隐藏掉;

▇ 脚本(Creature.cs)

[C#] 纯文本查看 复制代码

?
▇ 脚本(Targeting.cs)

[C#] 纯文本查看 复制代码

?
▇ 脚本(TargetPortrait.cs)

[C#] 纯文本查看 复制代码

?
▇ 效果



img.png (480.89 KB, 下载次数: 0)

下载附件 保存到相册

2013-6-30 13:04 上传

按Tab键选中目标后,对应的Cube就会变红。按Esc则会取消选中的目标,原来变红的Cube全会变白。在《Hack & Slash RPG》教学视频中还做了优先按距离选取最近的那个目标,原理也很简单,就是用Vector3.Distance求两点间的距离,在修改当前目标前先将目标列表按距离排序就可以了。在魔兽世界里效果就更帅气了,目标底下会有个光圈。不过我的制作思路还不是很清晰,就先放一放,应该不会太难
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d