【问题标题】:Press a in game Button to play a animation按游戏中的按钮播放动画
【发布时间】:2016-05-25 19:30:30
【问题描述】:

我最近考虑在我的游戏中添加一个 InGame 按钮。它不是 GUI 或 UI 按钮,而是块,例如添加到墙。

虚拟代码:

OnTriggerEnter(c:Collider)  { 
    if(c.gameObject.tag =="Player") 
    {
       //Text = "E to interact!" 

      if(key.pressed("e")
      {
         //Connect the Button to a specific Block,      play a Animation
      } 
    }  
 }

那么如何将特定块连接到按钮,如果我按 e,仅在特定块上播放动画?请记住,我是 Unity 的新手。 感谢您的帮助!

【问题讨论】:

  • 能否详细说明一下!

标签: c# unity3d unity5


【解决方案1】:

我不知道你是否已经设法创建了你的动画,所以我会从头开始解释。在编辑器中,选择您的门并按 ctrl+6 打开动画窗口。从这里您可以为您的块设置动画。当您完成动画的创建后,您的块对象将附加一个新脚本:animator。可以在动画窗口中看到动画状态机

这是两个不同的东西:

  • 动画:定义单个动画(平移、旋转、颜色变化……)

  • Animator:定义相应游戏对象的动画何时发生。动画师可以有变量(例如布尔值)来定义下一个要播放的动画

任何物体都可以有一个动画师(你的按钮可以有一个在按下时移动。你的门可以有另一个打开/关闭)

例如,在您的按钮动画制作器中,您应该具有三种状态:空闲、按下、取消按下。 状态 Press 将包含动画“press”,速度为 1。状态 UnPress 将包含动画“press with speed -1

然后,仍然在动画窗口中,您将在空闲和其他两个状态之间创建链接,并添加一个名为“OnPress”的触发条件(例如)

你可以做同样的事情来为你的门设置动画

在您的 Button 代码中,您将编写

public Animator Door; // In the editor, give a reference to your door. It must have an Animator script for this to work

OnTriggerEnter(c:Collider)  { 
    if(c.gameObject.tag =="Player") 
    {
        //Text = "E to interact!" 

        if(key.pressed("e")
        {
           GetComponent<Animator>().SetTrigger("OnPress"); // The button's animator goes to "pressed" state
           Door.SetTrigger("Open");  // The door's animator goes to "open" state
        } 
    }  
}

然后你可以添加另一个触发器来取消按下按钮

还有一件事:当你说“将按钮连接到块”时,我觉得你误解了一些东西:你的按钮脚本应该已经添加到编辑器中的块中

查看这两个链接以获取有关动画的更多信息:

http://docs.unity3d.com/Manual/animeditor-UsingAnimationEditor.html http://docs.unity3d.com/Manual/AnimatorWindow.html

【讨论】:

  • 哇!这是一个很长很不错的答案!谢谢!我还没回家,会测试并回复是否有效或有任何问题,谢谢!
  • 所以我的 Button 脚本必须在 Button 和我要移动的块(门)上?因为我想按下我的游戏内按钮并想移动门,但圣经包含 ButtonBlock 的功能。我想我需要将脚本附加到它们两个上,或者制作一个公共游戏对象并引用它?
  • 我虽然你所说的“块”是游戏中按钮的视觉表示。只是为了确保我理解,你有一个带有 3d 网格的游戏对象,看起来像一个按钮,玩家可以按下它,你有另一个带有 3d 网格的游戏对象,看起来像一扇门。当玩家在按钮前面按下“e”时,门会动起来。这是正确的吗?
  • 没错。一个按钮的 3D 网格,一个用于门。你可以点击按钮,门就会打开 :) 很抱歉造成混乱!
  • 我刚刚编辑了答案。基本上,您提供了按钮脚本的门的参考。按钮脚本可以调用它自己的动画师,或者门的动画师,或者两者都调用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
相关资源
最近更新 更多