我是初学者,我正在尝试制作像地铁冲浪者这样的游戏,其中障碍物将朝向玩家并且玩家需要避开它。物体的速度会随着时间的推移逐渐增加。所以为了实现这一点,我决定使用空游戏对象作为全球速度管理器。速度管理器有一个名为速度的变量,其中在场景中产生的所有障碍物将参考以确定它们的速度,并且它以某种方式不起作用。有谁能告诉我为什么我的代码不起作用?
这是速度管理器代码
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);
}
}
}
问题是每当产生新的障碍物时,全局速度重置为零。因此产生的所有障碍根本没有动作。
答案 0 :(得分:0)
你没有在你的障碍代码“landmove”和产生的障碍物“impedpawn”之间建立任何关系,所以当你产生一个新的“asa”游戏对象时,它将找不到附加到它的任何组件,因此你的新衍生的物体不会移动。 您的代码中的另一个问题是此行(speed.kelajuan = sped),您将其重置为0,因为 sped 是初始化为0的局部变量。将其更改为(sped = speed。 kelajuan)获得speed.kelajuan的真正价值。
希望这有帮助。