OnMouseEnter旋转变换

时间:2015-02-27 05:53:24

标签: c# unity3d

我想在Unity3D上旋转扑克牌,所以当玩家点击该牌时,会显示该牌。

我阅读了文档,到目前为止,我可以使用以下代码执行此操作:

public void OnMouseEnter()
{
    transform.Rotate(Vector3.up);
}

现在我想使用以下代码使用OnMouseDown():

for (int i = 1; i == 90; i++)
{
    transform.Rotate(Vector3.up);
}

但到目前为止它什么也没做。这个想法是自动轮换。

任何想法???

2 个答案:

答案 0 :(得分:4)

piojo的答案有效,但是当你点击卡片时,它不会启动,但是当你点击应用程序的任何地方时。

private bool isClicked = false;
void OnMouseDown() {
    isClicked = true;
}

public float rotationSpeed = 100.0f;
void Update () {
    if(isClicked) {
        transform.Rotate(Vector3.up * Time.deltaTime * rotationSpeed);
    }
}

此代码启动名为OnMouseDown的事件的轮换。要在单击卡片时触发它,您需要向GameObject添加2D或3D对撞机。这些可以从Add Component - >中找到。 PhysicsPhysics 2D

我使用public变量作为rotationSpeed,因为它的值可以从统一编辑器中调整。

答案 1 :(得分:1)

在游戏开发中,我们通常在Update循环或更新功能中进行这些更改,每帧更改一次。该函数的文档实际上告诉您该怎么做:

http://docs.unity3d.com/ScriptReference/Transform.Rotate.html

唯一的区别是,您需要将移动代码包装在鼠标按下的测试if (Input.GetMouseButton(0))中。