一周前,我开始制作我的第一款游戏,但是在编码方面遇到了一些问题。基本上,我制作了一款您可以玩球的游戏。目标是躲避障碍并达到关卡的尽头。
我制作了一个重生器,每当您死亡时,它都会将球放在地图的开始处。我的问题是,一旦球重新产生,球就会再次开始移动。
到目前为止,为了防止Ball从一开始就移动,我所做的就是禁用了Ball的PlayerMov
脚本(玩家移动)以及Rigidbody组件中的“使用重力”复选框。所以现在我的球卡在了无法移动的起始位置。
那么我需要什么帮助?我希望人类玩家按下空格键以使球的PlayerMov
脚本和“使用重力”复选框(在Rigidbody中)启用。因此,它不再需要在重生后立即移动球,而是现在要等待人类玩家按下空格键再开始。
您可以在下面看到的脚本是我的EnableMovement
脚本,我在其中尝试解决此问题。但是出了点问题,我不太确定这是什么。
答案 0 :(得分:2)
您必须将其放置在update()
方法中,因此,如果按下空格键,脚本将检查每个帧。
void Update()
{
if (Input.GetKey(KeyCode.Space)) //notice the removing of the ;
{
GetComponent<PlayerMov>().enabled = true;
}
}
键入此代码时,您的代码有误:
if (Input.GetKey(KeyCode.Space)); //notice the ;
{
GetComponent<PlayerMov>().enabled = true;
}
这与:
是同一回事if (Input.GetKey(KeyCode.Space))
; //Do nothing
//there is a scope that will be executed
{
GetComponent<PlayerMov>().enabled = true;
}
和这完全一样:
if (Input.GetKey(KeyCode.Space))
{
; //Do nothing
}
//there is a scope that will be executed
{
GetComponent<PlayerMov>().enabled = true;
}
答案 1 :(得分:2)
编辑:我的错误,您要更改的属性不是enabled
的{{1}}。是IsKinematic
。另外,您可能也想禁用碰撞。我已经在下面编辑了代码。
一个简单的解决方案是在运行游戏时禁用物理功能,并在玩家按下空格时启用物理功能。将Rigidbody
属性设置为Rigidbody.IsKinematic
意味着true
将不受物理影响。这样,您无需触摸重力设置或禁用脚本。
GameObject