Animation 如何在Unity3d中的3d对象(3d立方体)上创建“点击效果”?

Animation 如何在Unity3d中的3d对象(3d立方体)上创建“点击效果”?,animation,button,unity3d,gameobject,Animation,Button,Unity3d,Gameobject,我有一个3d对象立方体,我想用作按钮。我编写代码是为了检测立方体是否被按下,但它看起来不像被按下了,因为它缺少单击动画。如何在我的3d对象上创建单击动画?您可以使用新的unity事件系统来实现您的按钮。以下是您可以实现的功能: public class ExampleClass : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IPointerEnterHandler, IPointerE

我有一个3d对象立方体,我想用作按钮。我编写代码是为了检测立方体是否被按下,但它看起来不像被按下了,因为它缺少单击动画。如何在我的3d对象上创建单击动画?

您可以使用新的unity事件系统来实现您的按钮。以下是您可以实现的功能:

public class ExampleClass : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
{

    public void OnPointerEnter(PointerEventData eventData)
    {
       //it is the function when you hover your mouse to the object
       //You can change the color of your object to make your users
       //understand that it is not just a cube but also a clickable item
    }

    public void OnPointerExit(PointerEventData eventData)
    {
      //You can revert your color back to its original
    }

    public void OnPointerDown (PointerEventData eventData) 
    {
        //You can play with local scale as suggested by other answers here
    }
    public void OnPointerUp (PointerEventData eventData)
    {
       // Revert back the changes you made at onPointerDown
    }

    public void OnPointerClick (PointerEventData eventData)
    {
         //Use here for operations when your button is clicked
    }

}

您可以使用unity的新事件系统来实现您的按钮。以下是您可以实现的功能:

public class ExampleClass : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
{

    public void OnPointerEnter(PointerEventData eventData)
    {
       //it is the function when you hover your mouse to the object
       //You can change the color of your object to make your users
       //understand that it is not just a cube but also a clickable item
    }

    public void OnPointerExit(PointerEventData eventData)
    {
      //You can revert your color back to its original
    }

    public void OnPointerDown (PointerEventData eventData) 
    {
        //You can play with local scale as suggested by other answers here
    }
    public void OnPointerUp (PointerEventData eventData)
    {
       // Revert back the changes you made at onPointerDown
    }

    public void OnPointerClick (PointerEventData eventData)
    {
         //Use here for operations when your button is clicked
    }

}

一旦单击“发生”,您可以将其缩小一点。例如:

void OnMouseDown() {
    this.transform.localScale += new Vector3(0.05f, 0.05f, 0.05f);
}

然后单击后将其缩放回原始大小。

一旦单击“发生”,您可以将其缩小一点。例如:

void OnMouseDown() {
    this.transform.localScale += new Vector3(0.05f, 0.05f, 0.05f);
}

然后单击后将其缩放回原始大小。

一个好主意是播放一个动画,稍微旋转立方体,然后立即将其释放。您希望在单击时执行的处理程序代码可能会阻止游戏循环,例如在加载关卡时。然后,为了能够看到动画,可能需要同步加载关卡。或者在动画之后执行处理程序代码。或者,在“新闻”事件中播放缩小动画,在“发布”事件中播放放大动画

从技术上讲,您可以使用内置动画编辑器、更新方法、启动协同程序或使用iTween或HOTween资源


如果您喜欢这个想法或有问题,请告诉我。

一个好主意是播放一个动画,稍微旋转立方体,然后立即释放它。您希望在单击时执行的处理程序代码可能会阻止游戏循环,例如在加载关卡时。然后,为了能够看到动画,可能需要同步加载关卡。或者在动画之后执行处理程序代码。或者,在“新闻”事件中播放缩小动画,在“发布”事件中播放放大动画

从技术上讲,您可以使用内置动画编辑器、更新方法、启动协同程序或使用iTween或HOTween资源


如果您喜欢这个想法或出现问题,请告诉我。

Unity现在可以更轻松地使用Unity Canvas UI进行此操作。您可以在世界空间中需要按钮的位置放置画布UI,而不是真正的3d按钮。将UI面板添加到画布,然后添加UI按钮

现在,您有了一些现成的点击效果。默认设置为“颜色着色”,但可以选择“精灵交换”或“动画”

如果您确实想要动画,当您选择“按钮动画”时,它将为您创建一个动画师。单击场景层次中的UI按钮游戏对象并打开动画窗口。您可以从下拉列表中选择已按下的动画,然后按“录制”按钮,然后编辑按钮比例,例如,将x、y、z的比例设为0.75。现在,当您单击按钮时,它将为您设置一个冷缩放动画


对不起,我知道有很多信息被丢弃了!但一旦你开始在世界空间中使用它,你会发现它非常棒。

Unity现在使用Unity Canvas UI更容易做到这一点。您可以在世界空间中需要按钮的位置放置画布UI,而不是真正的3d按钮。将UI面板添加到画布,然后添加UI按钮

现在,您有了一些现成的点击效果。默认设置为“颜色着色”,但可以选择“精灵交换”或“动画”

如果您确实想要动画,当您选择“按钮动画”时,它将为您创建一个动画师。单击场景层次中的UI按钮游戏对象并打开动画窗口。您可以从下拉列表中选择已按下的动画,然后按“录制”按钮,然后编辑按钮比例,例如,将x、y、z的比例设为0.75。现在,当您单击按钮时,它将为您设置一个冷缩放动画


对不起,我知道有很多信息被丢弃了!但一旦你开始在世界空间使用它,你会发现它非常棒。

也许可以在Unity Asset store上免费查看它


它非常容易使用,你可以制作一些好看的动画

也许可以在Unity Asset store上免费查看它


它非常容易使用,你可以制作一些好看的动画

您可以在按下时缩放它,或只是稍微更改一下颜色。鼠标向上移动时,重新缩放或重新缩放它

void OnMouseDown()
{
    transform.localScale -= new Vector3(0.05, 0.05 , 0);
    //or
    transform.GetComponent<SpriteRenderer>().color += new Color(40,40,40);
}

void OnMouseUp()
{
    transform.localScale += new Vector3(0.05, 0.05 , 0);
    //or
    transform.GetComponent<SpriteRenderer>().color -= new Color(40,40,40);
}

您可以在按下时缩放它,或只是稍微更改一下颜色。鼠标向上移动时,重新缩放或重新缩放它

void OnMouseDown()
{
    transform.localScale -= new Vector3(0.05, 0.05 , 0);
    //or
    transform.GetComponent<SpriteRenderer>().color += new Color(40,40,40);
}

void OnMouseUp()
{
    transform.localScale += new Vector3(0.05, 0.05 , 0);
    //or
    transform.GetComponent<SpriteRenderer>().color -= new Color(40,40,40);
}

听起来你可以只在一个本地轴上移动按钮?听起来你可以只在一个本地轴上移动按钮?这不是真正的游戏,而是使用vuforia SDK的应用程序的一部分。在图像识别之后,我添加了一些立方体作为按钮,我希望它们可以点击。我想让用户明白:嘿,你可以按下这些立方体。这些不仅仅是盒子,而是按钮。我希望他们有一个简单的2d按钮,点击,或者至少类似的动画。这不是真正的游戏,而是游戏的一部分 该应用程序使用vuforia SDK。在图像识别之后,我添加了一些立方体作为按钮,我希望它们可以点击。我想让用户明白:嘿,你可以按下这些立方体。这些不仅仅是盒子,而是按钮。我希望他们有一个动画作为一个简单的2d按钮,点击,或至少类似的东西。