我正在制作2D手机游戏而且我有一个球,但我的球并没有恒定的移动速度。我需要做什么? 当我在我的Android设备上构建游戏时,球有各种速度。在那种情况下,我的游戏无法播放。
我希望有人可以帮助我。感谢。
这是我的开始功能:
void Start () {
GetComponent<Rigidbody2D> ()
.AddForce (new Vector2 (1f, 0.5f)* Time.deltaTime * force);
}
如果我在代码中使用它是一个好习惯吗? Application.LoadLevel(&#34; __ Scena_0&#34;); &#34;当我失去时加载现有场景&#34;寿命&#34; ?当我输了#34;生活&#34;并尝试以第二次机会玩游戏。
当我的球击中触发对象时,我的更新功能是关于OnTriggerEnter2D。
编辑于2015年12月23日。 :问题通过添加物理材料(小说0)并添加到脚本来解决:
using UnityEngine.SceneManagement;
...
SceneManager.LoadScene ("MainScene");
答案 0 :(得分:1)
创建一个新的Physics Material,设置摩擦零并将其添加到您的对象。如果你的物体没有摩擦力,它的速度就不会降低。然后,在Rigidbody2D上使用AddForce()
来加速。
答案 1 :(得分:1)
问题是力矢量的计算:
new Vector2 (1f, 0.5f) * Time.deltaTime * force
您正在使用Time.deltaTime作为因子,这意味着所施加的力不是常数,而是取决于deltaTime,即最后一帧的持续时间。这解释了为什么它会随机变化。
我不认为Time.deltaTime就是你想要的,试着去除因素并调整&#34; force&#34;相应的因素。你现在应该施加一个恒定的力量,独立于你所使用的平台。
答案 2 :(得分:0)
假设您的球和碰撞墙有弹性材料,没有摩擦力。尝试
public float _ballSpeed = 2.5f;
Rigidbody2D _rb;
void Start()
{
_rb = GetComponent<Rigidbody2D>();
_rb.velocity = Vector2.one * _ballSpeed;
}
void Update()
{
}
通过_ballSpeed
//========== OR ==========//
如果你想在球破坏后保持速度。
在任何全局静态变量中保留_ballSpeed。
假设您有一个名为Globals
的类,声明一个类似
public class Globals
{
public static float BALL_SPEED = 2.5f;
}
现在在Ball Script
Rigidbody2D _rb;
void Start()
{
_rb = GetComponent<Rigidbody2D>();
_rb.velocity = Vector2.one * Globals.BALL_SPEED;
}
void Update()
{
}