如何逐步提高物体的速度

时间:2015-03-16 05:45:42

标签: c# unity3d

我是初学者,我正在尝试制作像地铁冲浪者这样的游戏,其中障碍物将朝向玩家并且玩家需要避开它。物体的速度会随着时间的推移逐渐增加。所以为了实现这一点,我决定使用空游戏对象作为全球速度管理器。速度管理器有一个名为速度的变量,其中在场景中产生的所有障碍物将参考以确定它们的速度,并且它以某种方式不起作用。有谁能告诉我为什么我的代码不起作用?

这是速度管理器代码

 using UnityEngine;
 using System.Collections;

 public class Speed : MonoBehaviour {
 public float kelajuan = 10f;
 // Use this for initialization
 void Start () {

 }

 // Update is called once per frame
 void Update () 
 {
     kelajuan += Time.deltaTime/40;
 }
 }

这里是障碍代码

using UnityEngine;
using System.Collections;

public class landmove : MonoBehaviour {

 public float sped;


 // Use this for initialization
 void Start () 
 {
     GameObject manager = GameObject.Find ("manager");
     Speed speed = manager.GetComponent<Speed> ();
     speed.kelajuan = sped; 
 }

 // Update is called once per frame
 void Update () {

     transform.Translate (-sped * Time.deltaTime, 0, 0);


     if (transform.position.x < -10)
     {
         Destroy(gameObject);
     }

 }
}

这里是障碍产生代码。有4种不同的障碍

 using UnityEngine;
 using System.Collections;
 using System.Collections.Generic;
 public class obstaclespawn : MonoBehaviour {
 public List<GameObject> obPrefabs;
 //public GameObject asa;

 // Use this for initialization
 void Start () 
 {
     StartCoroutine(enemySpawn());

 }

 // Update is called once per frame
 void Update () {

 }

 IEnumerator enemySpawn()
 {
     while (true) 
     {
         GameObject asa = obPrefabs[Random.Range(0,obPrefabs.Count)];
         yield return new WaitForSeconds (Random.Range (1,3));
         Instantiate (asa);
     }
 }

}

问题是每当产生新的障碍物时,全局速度重置为零。因此产生的所有障碍根本没有动作。

1 个答案:

答案 0 :(得分:0)

你没有在你的障碍代码“landmove”和产生的障碍物“impedpawn”之间建立任何关系,所以当你产生一个新的“asa”游戏对象时,它将找不到附加到它的任何组件,因此你的新衍生的物体不会移动。 您的代码中的另一个问题是此行(speed.kelajuan = sped),您将其重置为0,因为 sped 是初始化为0的局部变量。将其更改为(sped = speed。 kelajuan)获得speed.kelajuan的真正价值。

希望这有帮助。