【问题标题】:OnMouseEnter rotate a transformOnMouseEnter 旋转变换
【发布时间】:2015-03-02 15:57:29
【问题描述】:

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

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

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

现在我想使用以下代码通过 OnMouseDown() 来实现:

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

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

有什么想法吗???

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    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 的事件上启动轮换。要在您单击卡片时触发它,您需要将 2D 或 3D 对撞机添加到您的 GameObject 。这些可以从Add Component-> PhysicsPhysics 2D 找到。

    我使用公共变量作为旋转速度,因为它的值可以从统一编辑器中调整。

    【讨论】:

    • 谢谢。您的回答将我引向正确的方向。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-17
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      相关资源
      最近更新 更多