我正在制作一个游戏,其中玩家只能旋转他们站立的当前图块。我正在使用OnCollisionStay和Input.horizontal和Vertical来实现此目的。它可以很好地与键盘配合使用,但我的目标是使其成为移动设备。
我的问题是,当播放器移动时,如何使UI按钮控制不同的图块。因此,基本上我需要在玩家移至下一个图块时切换按钮所控制的图块。希望这是有道理的。现在,每个图块都有自己的脚本。我在下面包括了其中之一。
谢谢!
void OnCollisionStay(Collision collision)
{
if (collision.gameObject.tag == "Player")
{
float rotateright = Input.GetAxis("Horizontal") * rotatespeed;
float rotateleft = Input.GetAxis("Vertical") * rotatespeed;
transform.Rotate(0, rotateright, 0);
transform.Rotate(rotateleft, 0, 0);
}
}
答案 0 :(得分:0)
使用OnCollisionStay来实现这种功能并不理想。
例如,如果您的角色对象同时重叠两个碰撞器,则它将同时旋转两个碰撞器,从而导致各种空间混乱。
一个更好的主意是将当前图块存储在一个公共的类范围变量中,并通过一个单独的函数对其进行操作。然后,您可以使用OnCollisionEnter来检查何时输入了新的图块。
示例:
GameObject currentTile;
void Update (){
ControlCheck();
}
public void ControlCheck(){
if (currentTile != null){
// Rotation code goes here
}
}
void OnCollisionEnter(Collision obj){
currentTile = obj.transform.gameObject;
}