我想在Unity3D上旋转扑克牌,所以当玩家点击该牌时,会显示该牌。
我阅读了文档,到目前为止,我可以使用以下代码执行此操作:
public void OnMouseEnter()
{
transform.Rotate(Vector3.up);
}
现在我想使用以下代码使用OnMouseDown():
for (int i = 1; i == 90; i++)
{
transform.Rotate(Vector3.up);
}
但到目前为止它什么也没做。这个想法是自动轮换。
任何想法???
答案 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
- >中找到。 Physics
或Physics 2D
。
我使用public变量作为rotationSpeed,因为它的值可以从统一编辑器中调整。
答案 1 :(得分:1)
在游戏开发中,我们通常在Update循环或更新功能中进行这些更改,每帧更改一次。该函数的文档实际上告诉您该怎么做:
http://docs.unity3d.com/ScriptReference/Transform.Rotate.html
唯一的区别是,您需要将移动代码包装在鼠标按下的测试if (Input.GetMouseButton(0))
中。