我有一个3d对象(立方体),我想用它作为一个按钮。我编写代码是为了检测,如果多维数据集被按下但它看起来不像被按下,因为它没有“点击动画”。如何在3d对象上创建点击动画?
答案 0 :(得分:2)
一个好主意是玩一个动画,它会使立方体稍微过度并立即释放它。您希望在单击时执行的处理程序代码可能会阻止游戏循环,例如当你加载一个级别。然后,为了能够看到动画而非常有意义地加载关卡可能会很有用。或者您在动画后执行处理程序代码。或者您在新闻事件上播放缩小动画,在发布事件上播放放大动画。
从技术上讲,您可以使用内置动画编辑器,Update()方法,启动协程或使用资源iTween或HOTween。
http://docs.unity3d.com/ScriptReference/Transform-localScale.html
如果您喜欢这个想法或问题,请告诉我。
答案 1 :(得分:2)
Unity使用Unity Canvas UI可以更轻松地完成此操作。您可以将画布UI放置在您想要按钮的位置的世界空间中,而不是真正的3D按钮。将UI面板添加到画布,然后添加UI按钮。
现在,你已经开箱即用了几个点击效果。默认为颜色色调,但您可以选择精灵交换或动画。
如果你想要动画,当你选择按钮动画时,它会为你创建一个动画师。单击场景层次结构中的UI按钮Game Object,然后打开动画窗口。您可以从下拉菜单中选择按下的动画,然后按下RECORD按钮,然后编辑按钮比例,比如说x,y,z为0.75。现在当你点击按钮时,它将为你制作一个很酷的缩放比例。
抱歉,我知道很多信息都被丢弃了!但是一旦你开始在世界空间中使用它,你会发现它非常棒。
答案 2 :(得分:1)
一旦点击发生,您可以将其缩小一点。例如:
void OnMouseDown() {
this.transform.localScale += new Vector3(0.05f, 0.05f, 0.05f);
}
然后点击后缩放回原始大小。
答案 3 :(得分:1)
或许关注iTween(在Unity Asset商店免费)。
它非常易于使用,你可以制作一些漂亮的动画。
答案 4 :(得分:1)
按下时可以缩放它,或者稍微改变颜色。在鼠标向上,重新缩放或重新着色。
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);
}
答案 5 :(得分:-1)
您可以使用统一的新事件系统来实现您的按钮。以下是您可以实现的功能:
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
}
}