【15-09-16更新】【地图实例教程】榴弹反射台+假DMM破坏效果
本帖最后由 Ultimate 于 2015-9-16 22:19 编辑注意:下载本帖下方提供的地图源码文件进行参考/学习。如果你对实体没有基础了解,你可能不知道干了什么,完全新手请先了解实体Inputs/Outputs系统以及实体属性,如果你会做一个按E开门的按钮触发或者会制作一个简单的传送区域,那么你基本就知道这个帖子在说啥。
Valve Developer Community:https://developer.valvesoftware.com
地图包括内容:
+一个榴弹发射台
+四个带物理效果的可破坏性固实体建筑
关键实体:
-榴弹炮
game_ui (控制方向)https://developer.valvesoftware.com/wiki/Game_ui
这里用于限制玩家行动、限制玩家可控当前FOV、启用/关闭控制炮台、触发开火、恢复正常玩家Targetname。
被使用到的I/O:
Outputs:
PlayerOn - 当输入者激活game ui控制时
PlayerOff - 当输入者脱离game ui控制时
PressedAttack - 当输入者执行了一个+attack命令时
Inputs:
Activate - 对输入者激活game ui控制
point_template (“榴弹”生成)https://developer.valvesoftware.com/wiki/Point_template
生成指定实体模板,实体被指定将开局不存在,这里用作生成“榴弹”
被使用到的I/O:
Inputs:
ForceSpawn - 生成所有被指定的实体在实体位置
logic_measure_movement (生成瞄准)https://developer.valvesoftware.com/wiki/Logic_measure_movement
该实体我个人也不熟悉,这里我用作将炮台绕一个实体的Helper位置旋转,在vmf中你可以看到func physbox(这里是作为控制框架,并不是下面的碰撞网格)和prop dynamic(引用一个模型作为炮台模型,没有任何实际功能)被Parent在一块。
被使用到的I/O:
Inputs:
SetMeasureTarget - 相当于修改了Entity to Measure的键值,也就是重新定义被测量运动的实体。
Disable - 关闭/禁用这个实体
Enable - 启用/激活这个实体
trigger_teleport (传送“榴弹”)https://developer.valvesoftware.com/wiki/Trigger_teleport
这里将point_template生成的榴弹传送到榴弹发射台炮管口,也就是传送到push的发射线处,勾选了Physics Objects。
func_physbox (负责碰撞与触发爆炸)https://developer.valvesoftware.com/wiki/Func_physbox
prop physics没有生命值设定,所以这里使用func physbox作为prop physics的额外碰撞网格与生命值,当func physbox受到物理伤害/顶点碰到任意碰撞网格位置,physbox则会Break(因为我设置了生命值仅为1),当Break,触发事件:prop physics→Break。
MassScale(SmartEdit Off,SmartEdit On是Mass)键值会影响飞行,这里设置了100倍。
被使用到的I/O:
Outsputs:
OnBreak - 当physbox被破坏/摧毁时(与Source L4D2时期后新增的OnKilled类似,并不是同一个意思!)
prop_physics (负责爆炸与伤害)https://developer.valvesoftware.com/wiki/Prop_physics
physics和physbox都具有一个当Break时创建一个爆炸的属性,但physbox的是无效的,这里用有效的实体prop physics作为爆炸用途。当func physbox受到物理伤害则Break,则触发自身OnBreak→prop physics→Break,当prop physics被触发Break,立即爆炸。(由于爆炸没有额外音效,这里同时OnBreak→ambient_generic→PlaySound)。
MassScale(SmartEdit Off,SmartEdit On是Mass)键值会影响飞行,这里设置了100倍。
被使用到的I/O:
Outputs:
OnBreak - 当physbox被破坏/摧毁时(与Source L4D2时期后新增的OnKilled类似,并不是同一个意思!)
trigger_push (发射线)https://developer.valvesoftware.com/wiki/Trigger_push
这里使传送进来的“榴弹”“发射”,力度这里是极为巨大的,但其实足够大就行了,注意:这里推动的是Physics物体,记得在Flag勾选Physics Object才能对prop physics和func physbox生效。
logic_timer (冷却时间)https://developer.valvesoftware.com/wiki/Logic_timer
在这里,开火是logic relay负责,则设置logic relay→OnTrigger→logic timier→Enable(这一步一定要在Disable自身之前),logic relay→OnTrigger→!self→Disable,设定timer的时间为3秒,然后logic timer→OnTime→logic relay→Enable。
这样做会有一个无法开火的BUG,也就是可能当玩家刚好在OnTime时开火,所以我设置了一个修复这个BUG的按钮
被使用到的I/O:
Outputs:
OnTime - 当实体自身被设定的时间到时
Inputs:
Enable - 启用/激活这个实体
-假DMM效果
func_physbox(没错,一实体全役)https://developer.valvesoftware.com/wiki/Func_physbox
设置physobx的Strength,在设置Physics Impact Force to Override Motion(如果被设定,开局将关闭运动,当任何一个大于设定值的力被施加在physbox上,physbox开启运动),也可以配合使用Health Level to Override Motion(如果被设定,开局将关闭运动,当生命值低于多少时,同上),这样设定后由于Disable Motion时是看不到组成之间的缝隙的,所以跟一个整体没区别,这个效果如果太过于精细,会过度消耗电脑资源。
设置不同的MassScale会有不同的效果。
可选性实体:
func_button(启动控制)https://developer.valvesoftware.com/wiki/Func_physbox
这里用作启用炮台与设定玩家独有Targetname防止与其他Targetname混淆导致出现问题。
被使用到的I/O:
Outputs:
OnPressed - 当Button被按下/执行Press时
logic_relay (消息转发器,将开火触发集合在一块,分清条理)https://developer.valvesoftware.com/wiki/Logic_relay
ambient_generic(爆炸声、发射声)https://developer.valvesoftware.com/wiki/Ambient_generic
设定SourceEntityName值到支持的实体则可以让声音从这个实体发出,参数同套用ambient_generic
被使用到的I/O:
Outputs:
OnTrigger - 当触发时
Inputs:
Trigger - 触发该实体,将对应输出OnTrigger
env_sprite (开火特效)https://developer.valvesoftware.com/wiki/Env_sprite
最佳渲染模式:World Space Glow
被使用到的I/O:
Outputs:
OnUser1 - 当实体被输入FireUser1时,执行OnUser1输出,这是一个自定义输出,用途广泛。
Inputs:
ShowSprite - 显示Sprite
HideSprite - 隐藏Sprite
未被使用:env_smokestack(烟)https://developer.valvesoftware.com/wiki/Env_smokestack
未被使用:env_steam(同烟)https://developer.valvesoftware.com/wiki/Env_steam
有更多的想法能实现:
+发射不同属性的榴弹(实体拼盘)
+发射距离控制(分trigger_push块,Disable与Enable)
+按钮发射操控台
+etc..
问题总结:
-伤害不能过滤。
-轨迹线会有开火一瞬间显示错乱。Valve没有给“轨迹”实体加Disable和Enable……
-没有故障修复按钮,虽然我在移动式所有测试过程中从未出现过任何一次故障。
-爆炸音效仅个人能听到,由于SourceEntityName的问题,绑定在“炮弹”实体上不生效,所以这里直接放在Knife上播放这个音效了。
-切记不要保存笔刷,这会让你创建一个无效固体!要复制到其他地图中,请保证Targetname没有重复!
其他信息:
http://tieba.baidu.com/p/4032088655
http://tieba.baidu.com/p/4038213272
(VMF+BSP)固定式下载地址:http://pan.baidu.com/s/1gduEef5 密码:5iw4
2015-09-16更新:便携式
http://i3.tietuku.com/74d985c24c86fb81.gif
关键实体:
env_spritetrail(“榴弹轨迹”)https://developer.valvesoftware.com/wiki/Env_spritetrail
这里用于制作一个“轨迹”,使用白色laser spr
(VMF+BSP)便携式下载地址:http://pan.baidu.com/s/1mgKS2hU
{:32_795:}Cyber nyx 大萌宅 发表于 2015-9-14 22:23
Cyber nyx
你是? {:32_795:} 好厉害的样子。 {:32_795:}看不懂 一看就是技术宅 {:27_127:} 也许可以拿去做地图?{:27_148:} {:32_795:} 不起眼的轧空 发表于 2015-9-15 00:29
也许可以拿去做地图?
一个例子,看源码学习是最有效的,这个也就是让你学别人的地图是怎么做到的。然后自己就也能做出来了。 {:32_795:}家里蹲的技术宅 {:32_777:} 不明觉厉 我有一个问题.如果要生成一个附带其他效果的武器在point_template里面也要填上与武器相关的点实体/实体吗 CTMM的sQee 发表于 2015-9-15 18:18
我有一个问题.如果要生成一个附带其他效果的武器在point_template里面也要填上与武器相关的点实体/实体吗 ...
不太清楚你的意思,详细点,或者去群里@我,你知道我是谁233,Cyber....
在你回复的时候,我刚刚更新了所有被使用到的I/O。 {:27_127:}
页:
[1]