【问题标题】:Unity5 C#: How to rotate a GameObject with touch dragUnity5 C#:如何通过触摸拖动旋转游戏对象
【发布时间】:2016-01-22 12:16:01
【问题描述】:

我的场景中有一个立方体,我想在玩家触摸并拖动它时旋转它。这是代码

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Physics.Raycast (ray, out hit);

if(Input.GetMouseButton(0) &&  hit.collider.name == "Cube")
{
    xDeg -= Input.GetAxis("Mouse X") * speed * friction;
    yDeg += Input.GetAxis("Mouse Y") * speed * friction;
    fromRotation = cube.transform.rotation;
    toRotation = Quaternion.Euler(yDeg,xDeg,0);
    cube.transform.rotation = Quaternion.Lerp(fromRotation,toRotation,Time.deltaTime  * lerpSpeed);
}

我 100% 能够做到这一点,问题是我在立方体的每一面墙上都放置了几个带有碰撞器的其他游戏对象。我想要的只是玩家能够通过点击每面墙上的特定游戏对象来旋转立方体并执行一些动作。这是剩下的代码

if (Input.GetMouseButtonUp(0))
{
    Ray ray1 = Camera.main.ScreenPointToRay(Input.mousePosition);
    if (Physics.Raycast (ray1, out hit)) {
        if (hit.collider.name == "ABC") {
            //Perform action specific to ABC
        }   
     }
 }

现在,如果我尝试旋转立方体,它会运行 ABC(因为它肯定是 rayCast 工作)。我不知道我是如何真正实现这一点的,玩家能够通过触摸和拖动来旋转立方体,以及通过点击同一个立方体的墙壁来执行一些操作。

【问题讨论】:

  • 你用你的设备检查过这个吗?你试过这个吗...

标签: c# android ios unity3d


【解决方案1】:

将您的立方体对撞机放在与其他对象不同的层中。然后调用接受 layerMask 的 Physics.Raycast 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多