繁体   English   中英

如何获取每个实例化的GameObject Unity 2D的位置

[英]How to get position of every instantiated GameObject Unity 2D

我是新手,尝试制作一个简单的点按跳跃式2D游戏,我能够自己弄清楚事情,但对此问题我无能为力。 所以问题是:-1)。 我有三个脚本Movement.cs,Obstacle.cs和Score.cs(Movement.cs和Score.cs都附加到“玩家” gameObject上)。

2)。 在Score.cs中,我希望玩家每次跳跃并避免与障碍物碰撞时得分(就像飞扬的小鸟一样)。

3)这是我的Score.cs脚本:由于“代码未格式化”错误,我包含了代码段

 using UnityEngine; using System.Collections; public class Score : MonoBehaviour { public GameObject obstacle; public Obstacle obs; public int score; void Start () { obstacle = GameObject.Find("Crate"); obs = obstacle.GetComponent<Obstacle>(); } void Update () { if (obs.transform.position.x <= transform.position.x); { score++; Debug.Log (score); } Debug.Log (score); } } 

上面提到的脚本生成以下错误

MissingReferenceException:'Obstacle'类型的对象已被破坏,但您仍在尝试访问它。 您的脚本应检查其是否为null或不破坏该对象。

我发现的是,“ obs.transform.position.x”给出的是原始预制件的位置,而不是其生成的副本的位置(我在使用Debug.Log(obs.transform.position.x时观察到它))。

4)。 我的Obstacle.cs脚本是:

同样,出于同样的原因,我加入了代码段。

 using UnityEngine; using System.Collections; public class Obstacle : MonoBehaviour { public GameObject crate; //public GameObject clone; public float t = 1f; public int score = 0; public float startingPositionX = 2.53f; public float startingPositionY = -3.50f; void Start () { Invoke ("Generate", t); } void Update() { var x = -6f; var y = 0f; rigidbody2D.velocity = new Vector2 (x, y); //Debug.Log(clone.transform.position.x); /*if(clone.transform.position.x == -9.53f) { score++; Debug.Log(score); }*/ Destroy (crate, 3.0f); } void Generate() { /*clone = */Instantiate (crate, new Vector3 (startingPositionX, startingPositionY, 0f), Quaternion.identity); } } 

我尝试将“箱”预制件的副本分配给“克隆”,并在Obstacle.cs脚本中执行计分操作,但是它也没有用。

5)。 现在由于上述错误和问题,我无法将分数增加1,有趣的是,我的分数正在增加,例如每秒的帧数。

唷! 这就是我希望你们能理解我的问题并提供解决方案的全部。 问题很少,但我想我应该解释并尽可能清楚地说明。

为什么没有这项工作? 我尝试将“箱”预制件的副本分配给“克隆”,并在Obstacle.cs脚本中执行计分操作,但是它也没有用。 您是否将其投放到GameObject? 喜欢

clone = Instantiate (crate, new Vector3 (startingPositionX, startingPositionY, 0f), Quaternion.identity) as GameObject;

现在,您正在为您提供null引用,因为您正在尝试访问被破坏对象的transfrom属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM