-1

目前我正在学习 Unity 和 C#。我正在做一个小游戏,我在屏幕上控制一艘宇宙飞船,而流星在相机可见空间之外的随机位置产生,然后开始向飞船移动。

为此,我试图参考流星预制件上组件中的船游戏对象,以获取它的位置和开始向船移动所需的角度。

public class meteorPath : MonoBehaviour
{
    public float speed = 10f;
    public Rigidbody2D rb;
    public GameObject ship;
    void Start()
    {
        int typeOf = Random.Range(2, 11);
        Vector3 posOf = new Vector3(Random.Range(-7f, 7f), Random.Range(16f, 8f), 0);
        transform.localScale = new Vector3(typeOf, typeOf, 1);
        transform.localPosition = posOf;
    }

    
}

我怎样才能让玩家的位置来计算每次实例化流星所需的角度?

4

2 回答 2

0

获取引用的一种方法是创建实例化游戏管理器:当创建流星时,您可以从该实例化游戏管理器获取玩家位置。在流星开始时:私有 Vector3 playerPosition = GameManager.instance.playerPosition.transform.position;在游戏管理器中:

using System.Collections;

使用 System.Collections.Generic;使用 UnityEngine;

公共类 GameManager : MonoBehaviour { 公共静态 GameManager 实例;

public GameObject playerPosition;

private void Awake()
{
    
   
        instance = this;
    
    
}
于 2020-11-13T15:50:09.550 回答
0

我猜你是在运行时实例化所有东西。

你要么这样做:

  1. GameObject.Find(你的对象名称)
  2. GameObject.FindGameObjectWithTag ( sometag ),仅当您的玩家有标签时
  3. 将玩家的类设为单例,并使用 PlayerClassName.InstanceName 从其他类中引用它并引用位置。

如果你没有实例化所有东西而是一个静态场景,那么只需在里面制作一个带有玩家参考的流星预制件

于 2020-11-13T15:59:39.297 回答