UDN
Search public documentation:

GFxKismetInputCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 用户界面 & HUD > Scaleform GFx > 怎样在kismet中捕捉键盘输入

怎样在kismet中捕捉键盘输入


最后一次测试在2011年5月

概述


该教程指导您如何通过kismet来捕捉键盘输入,这样就能使一个GFx短片来使用所捕捉的输入来工作,而不再需要写任何虚幻脚本! 在关卡中的GFx短片是在玩家靠近它时可以与之进行互动的,就像计算机控制台。

设置


在新的Flash文件的页面中间创建一个新的简单红色方框。 将这个方框转换为视频剪辑,并在属性面板中赋予它一个'myGraphic'的实例名称。 在您的UDK安装目录下将该Flash文件保存在合适的位置。

ActionScript


将这段代码放在您Flash文件第一帧上叫做“action”的新层上。

ActionScript
_global.gfxExtensions = true;
_perspfov = 25; // Used in 3D transformations. Can be any value from 1 to 179.

var keyboardInput:Object = new Object(); // creates a new object to hold keyboard input.
Key.addListener(keyboardInput); // uses the object to listen for keyboard input.

/* when a key is pressed, execute this function. */
keyboardInput.onKeyDown = function()
{
    /* store the keyboard input ASCII code inside 'keyPressed'. */
    var keyPressed:Number = Key.getCode();

    /* if LEFT ARROW was pressed... */
    if (keyPressed == 37)
    {
        /* rotate the movie clip by +5 degrees. */
        myGraphic._yrotation += 5;
    }
    /* if RIGHT ARROW was pressed... */
    else if (keyPressed == 39)
    {
        /* rotate the movie clip by -5 degrees. */
   myGraphic._yrotation -= 5;
    }
}

ALERT! 注意: Scaleform当前不支持getAscii()。 相反,请确保使用getCode()。

保存并发布这个视频。

UDK初始设置


在UDK中创建一个简单的测试关卡。 创建一个具有一个光源和玩家起点的房间,然后根据下面的流程操作:

  • 在房间的某处创建一个BSP立方体 我们会在该立方体的一个面上显示GFx视频。
  • 在立方体其中一个面的正前方添加一个触发器。
  • 现在将SWF文件导入内容浏览器。 在和新导入的SWF所在的同一包中创建一个新的TextureRenderTarget2D(贴图渲染目标2D)。 将其命名为'myRT'.
  • 在同一个包里创建一个新的材质。 将其命名为'myMat'。
  • 在材质编辑器窗口中添加一个新的TextureSample(贴图示例)。
  • 将TextureSample(贴图示例)的黑色(RGB)输出口附加到材质的Diffuse(漫反射)输入口,并将白色(alpha通道)输出口附加到Material(材质)的Opacity(不透明)输入口。
  • 选中材质并在材质下拉菜单中将Blend Mode(混合模式)设置为BLEND_AlphaComposite。
  • 让材质编辑器处于打开状态,回到内容浏览器并选中"myRT"。
  • 回到材质编辑器中,选中Texture Sampe(贴图示例),然后将"myRT"插入到带有绿色箭头的贴图域中。
  • 关闭材质编辑器窗口并保存修改。
  • 保存包含SWF文件、渲染贴图和材质的包。
  • 选中BSP立方体其中一个面,最好是紧挨着触发器的那一面,在内容浏览器中选中"myMat",右击然后选择: Apply Material (应用材质): myMat.
  • 编译所有并保存关卡。

Kismet设置


打开kismet并执行以下步骤:

  • 添加一个Level Loaded(关卡加载)事件。
  • 添加一个Open GFx Movie(打开GFx视频)动作。
  • 将Loaded(已加载)和Visible(可见)连接到Open GFx Movie(打开GFx视频)上的In端口。
  • 创建一个新的Object Variable(对象变量)并将其附加到Open GFx Movie(打开GFx视频)的Movie Player(视频播放器)输出口。
  • 选中Open GFx Movie(打开GFx视频),并从内容浏览器中将SWF文件插入到Movie(视频)域中。
  • 从内容浏览器中将"myRT"插入到Render Texture(渲染贴图)区域中。
  • 将Render Texture(渲染贴图)设置为RTM_AlphaComposite。
  • 现在,在关卡中选中触发器,然后在kismet中右击并选中: New Event Using Trigger_x -> Touch(触碰).
  • 在新触发器节点的Sequence Event(序列事件)下拉菜单中,将Max Trigger Count(最大触发量)设置成0。
  • 添加一个新的Set GFx Captured Keys(设置GFx所捕捉的键)动作。
  • 将Movie Player(短片播放器)输入口连接到您以上在第四步所创建的Object Variable(对象变量)。
  • 将触发器节点的Touched(触碰)连接到Captured Key(所捕捉的键)节点的Activate(激活)输入口,然后将UnTouched(未触碰)输出口连接到DeActivated(不激活)输入口。
  • 选中Captured Key(所捕捉的键)节点,并使用绿色的加号图标添加两个Capture Key(捕捉键)。
  • 左边设置为[0]右边设置为[1]。

保存关卡,然后在编辑器中运行。

您应该可以走近显示为红色方框的GFx短片,然后使用您键盘上的左箭头和右箭头在3D空间中对它进行翻转。 远离视频会松开左右箭头按键。

您可以很方便地将材质"myMat"放在静态网格上,而不是BSP。