Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 密钥检测isn’;在统一中改变重力时,t总是起作用_Unity3d - Fatal编程技术网

Unity3d 密钥检测isn’;在统一中改变重力时,t总是起作用

Unity3d 密钥检测isn’;在统一中改变重力时,t总是起作用,unity3d,Unity3d,我在做一个游戏时有一些奇怪的行为。其主要思想是,用户将沿着一条路径行进,并可以按下空格键以反转重力并避开障碍物。我遇到的问题是,当我按下空格键时,大部分时间重力都会反转,但有时它不会正常工作 我在Update方法中进行了关键点检测,并在FixedUpdate方法中更改了重力。我不确定从技术上讲这是不是一个物理计算,所以我把它放在了里面 这是我的密码: public class BallMove : MonoBehaviour{ bool jump = false; float grav = -9

我在做一个游戏时有一些奇怪的行为。其主要思想是,用户将沿着一条路径行进,并可以按下空格键以反转重力并避开障碍物。我遇到的问题是,当我按下空格键时,大部分时间重力都会反转,但有时它不会正常工作

我在Update方法中进行了关键点检测,并在FixedUpdate方法中更改了重力。我不确定从技术上讲这是不是一个物理计算,所以我把它放在了里面

这是我的密码:

public class BallMove : MonoBehaviour{
bool jump = false;
float grav = -9.81f;
bool changeGravity = false;

void Start()
{
    rb = GetComponent<Rigidbody>();
    Physics.gravity = new Vector3(0, grav, 0);
}

private void Update()
{
    if (Input.GetKeyDown("space"))
        changeGravity = true;
}

void FixedUpdate()
{

    if ( Input.GetKeyDown("space")  && changeGravity )
    {
        changeGravity = false;
        grav *= -1;
        Physics.gravity = new Vector3(0, grav, 0);
    } 
}
public class BallMove:monobhavior{
布尔跳跃=假;
浮球重力=-9.81f;
bool-change-gravity=false;
void Start()
{
rb=GetComponent();
Physics.gravity=新矢量3(0,grav,0);
}
私有void更新()
{
if(Input.GetKeyDown(“空格”))
改变重力=真;
}
void FixedUpdate()
{
if(Input.GetKeyDown(“空格”)和changeGravity)
{
改变重力=错误;
grav*=-1;
Physics.gravity=新矢量3(0,grav,0);
} 
}
}

医生说

您需要从Update函数调用此函数,因为每个帧的状态都会重置

因此,在
FixedUpdate

void FixedUpdate()
{
    if (changeGravity)
    {
        changeGravity = false;
        grav *= -1;
        Physics.gravity = new Vector3(0, grav, 0);
    } 
}
警察说

您需要从Update函数调用此函数,因为每个帧的状态都会重置

因此,在
FixedUpdate

void FixedUpdate()
{
    if (changeGravity)
    {
        changeGravity = false;
        grav *= -1;
        Physics.gravity = new Vector3(0, grav, 0);
    } 
}