Unity3d 匀速球

Unity3d 匀速球,unity3d,Unity3d,我在做2D手机游戏,我有一个球,但我的球并没有恒定的移动速度。我需要做什么? 当我在我的安卓设备上构建游戏时,球有不同的速度。在这种情况下,我的游戏不可玩 我希望有人能帮助我。谢谢 这是我的启动功能: void Start () { GetComponent<Rigidbody2D> () .AddForce (new Vector2 (1f, 0.5f)* Time.deltaTime * force); } 创建一个新的,设置摩擦为零,并将其添加到对象中

我在做2D手机游戏,我有一个球,但我的球并没有恒定的移动速度。我需要做什么? 当我在我的安卓设备上构建游戏时,球有不同的速度。在这种情况下,我的游戏不可玩

我希望有人能帮助我。谢谢

这是我的启动功能:

void Start () {
    GetComponent<Rigidbody2D> ()
        .AddForce (new Vector2 (1f, 0.5f)* Time.deltaTime * force);
}

创建一个新的,设置摩擦为零,并将其添加到对象中。如果你的物体没有摩擦力,它的速度就不能降低。然后,在Rigidbody2D上使用
AddForce()
加速。

假设球和碰撞壁具有无摩擦的弹性材料。试一试

public float _ballSpeed = 2.5f;
Rigidbody2D _rb;

void Start()
{
    _rb = GetComponent<Rigidbody2D>();
    _rb.velocity = Vector2.one * _ballSpeed;
}
void Update()
{

}
如果你想在球被摧毁后保持速度

将球速保留在任何全局静态变量中

假设您有一个名为
Globals
的类,声明一个变量,如下所示:

public class Globals
{
    public static float BALL_SPEED = 2.5f;
}
现在是球脚本

Rigidbody2D _rb;

void Start()
{
    _rb = GetComponent<Rigidbody2D>();
    _rb.velocity = Vector2.one * Globals.BALL_SPEED;
}
void Update()
{

}
Rigidbody2D\u rb;
void Start()
{
_rb=GetComponent();
_rb.velocity=Vector2.one*Globals.BALL\u速度;
}
无效更新()
{
}

问题在于力矢量的计算:

new Vector2 (1f, 0.5f) * Time.deltaTime * force
您正在使用Time.deltaTime作为因子,这意味着施加的力不是恒定的,而是取决于deltaTime,即最后一帧的持续时间。这就解释了为什么它会随机变化


我不认为Time.deltaTime就是你想要的,试着去掉这个因子并相应地调整“力”因子。你现在应该有一个恒定的力,独立于你玩的平台。

你有一些代码要显示吗?你的问题是你不知道如何实现它,还是有些东西工作不正常?这是在我的启动函数上:void start(){GetComponent().AddForce(新向量2(1f,0.5f)*Time.deltaTime*force);}我给我的墙和球增加了弹性,但是“拥有不同的速度”和“我的游戏不可玩”是什么意思?请解释你期待什么,你看到了什么。你是否期望球以恒定的速度移动,但事实并非如此?不,当我在android设备上构建游戏时,第一次:球移动正常(就像在我的unity编辑器上),第二次(在失去“生命”之后):球以非常非常高的速度移动。我有墙,有时我的球会穿过墙(因此,请用更好的描述更新您的问题,并显示更多代码,包括何时重新创建球、更新函数以及其他可能有助于理解它的内容。如果没有,则只能猜测。我以前使用过这个,我也有同样的问题。如果我在代码“Application.LoadLevel”(“\u Scena\u 0”)中使用,这是一个好的做法吗?)“当我失去“生命”时加载现有场景?当我失去“生命”并在第二次机会中尝试玩游戏时会出现问题。使用“Application.LoadLevel(Application.loadedLevel);”重置当前水平谢谢。你解决了我的问题。但我现在的问题是我的球失去速度:在你的代码之后,我的球没有从墙上反弹,球在右角并且不断地撞到墙上谢谢你的回答,但它不需要有这个。这是关于物理材料的,虚构的0和移除的0非常感谢:)没关系,兄弟,但是现在,我的球失去了速度。现在速度不是恒定的。我想要一个速度总是一样的球。如果这是可能的。如果速度下降,这是因为摩擦。可以创建新的物理材质并将其摩擦力设置为0。然后将该材质指定给碰撞器。你不应该再因摩擦而失去速度。
Rigidbody2D _rb;

void Start()
{
    _rb = GetComponent<Rigidbody2D>();
    _rb.velocity = Vector2.one * Globals.BALL_SPEED;
}
void Update()
{

}
new Vector2 (1f, 0.5f) * Time.deltaTime * force