【发布时间】: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 工作)。我不知道我是如何真正实现这一点的,玩家能够通过触摸和拖动来旋转立方体,以及通过点击同一个立方体的墙壁来执行一些操作。
【问题讨论】:
-
你用你的设备检查过这个吗?你试过这个吗...