Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
C# 统一2D重力中的虫子?_C#_Unity3d_Physics_Gravity - Fatal编程技术网

C# 统一2D重力中的虫子?

C# 统一2D重力中的虫子?,c#,unity3d,physics,gravity,C#,Unity3d,Physics,Gravity,我正在用C#in Unity编写一个脚本,它基本上是一个开关,用于打开或关闭2D刚体的重力。游戏开始时,刚体的重力应为0。然后,当用户轻触空格键时,重力应该增加到3(实际上是这样)。然而,当玩家与标有“InvisGoal”的游戏对象发生碰撞时,玩家应传送到另一个位置,然后重力应再次为0。然而,玩家在接触到隐形球和远程传送后总是摔倒,我不明白为什么。这是我在C#中的第一个项目,对于任何明显的错误,我深表歉意。。脚本如下: using System.Collections; using System

我正在用C#in Unity编写一个脚本,它基本上是一个开关,用于打开或关闭2D刚体的重力。游戏开始时,刚体的重力应为0。然后,当用户轻触空格键时,重力应该增加到3(实际上是这样)。然而,当玩家与标有“InvisGoal”的游戏对象发生碰撞时,玩家应传送到另一个位置,然后重力应再次为0。然而,玩家在接触到隐形球和远程传送后总是摔倒,我不明白为什么。这是我在C#中的第一个项目,对于任何明显的错误,我深表歉意。。脚本如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BallLaunch : MonoBehaviour {

private Rigidbody2D myRigidBody;
public GameObject Ball;

// Use this for initialization
void Start ()
{
    myRigidBody = GetComponent<Rigidbody2D> ();
    GetComponent<Rigidbody2D>().gravityScale = 0f;
}

// Update is called once per frame
void Update ()
{
    if (Input.GetButtonDown ("Jump"))
    {
        GetComponent<Rigidbody2D> ().gravityScale = 3f;
    }
}
void OnTriggerEnter2D(Collider2D other){

    if (other.tag == "InvisGoal")
    {
        Ball.gameObject.GetComponent<Rigidbody2D>().gravityScale = 0f;
        transform.position = new Vector3 (0.61f, 1.18f, 0f);
        return;
    }
 }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类舞会:单一行为{
私人刚体;
公共游戏物体球;
//用于初始化
无效开始()
{
myRigidBody=GetComponent();
GetComponent().gravityScale=0f;
}
//每帧调用一次更新
无效更新()
{
if(Input.GetButtonDown(“跳转”))
{
GetComponent().gravityScale=3f;
}
}
无效OnTiggerEnter2D(碰撞的R2D其他){
if(other.tag==“InvisGoal”)
{
Ball.gameObject.GetComponent().gravityScale=0f;
变换位置=新矢量3(0.61f,1.18f,0f);
返回;
}
}
}

当你设置为0时,它应该是
GetComponent()
而不是
Ball.gameObject.GetComponent()
吗?是的,我在发布后注意到。。。不幸的是,我认为它只是简化了代码,当你设置为0时,它应该是
GetComponent()
而不是
Ball.gameObject.GetComponent()
?是的,我在发布后注意到。。。不幸的是,我认为这只是简化了代码。此外,可能存在一些累积的动量(重力是一个加速因子!如果它们已经在移动,它们将继续移动!)可能对询问者不重要,或者可能是。值得一提的是。此外,可能存在一些累积的动量(重力是一个加速因子!如果它们已经在移动,它们将继续移动!)可能对询问者并不重要,或者可能是这样。值得一提。
Ball.gameObject.GetComponent<Rigidbody2D>().gravityScale = 0f;
Ball.gameObject.GetComponent<RigidBody2D>()
GetComponent<RigidBody2D>()
Ball.gameObject.GetComponent<Rigidbody2D>().gravityScale = 0f;
GetComponent<Rigidbody2D>().gravityScale = 0f;
GetComponent<Rigidbody2D>().gravityScale = 0f;
myRigidBody.gravityScale = 0f;