Unity5 C#:如何使用触摸拖动旋转游戏对象

本文关键字:拖动 旋转 游戏 对象 触摸 何使用 Unity5 | 更新日期: 2023-09-27 18:31:36

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

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 工作它应该)。我不知道我是如何实际实现这一点的,玩家能够通过触摸和拖动来旋转立方体,以及只需点击同一立方体的墙壁即可执行一些动作。

Unity5 C#:如何使用触摸拖动旋转游戏对象

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