Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 试图在团结的玩家周围产生敌人_C#_Unity3d_2d - Fatal编程技术网

C# 试图在团结的玩家周围产生敌人

C# 试图在团结的玩家周围产生敌人,c#,unity3d,2d,C#,Unity3d,2d,2D侧卷轴。我试着在玩家周围绕一个圆圈实例化5个敌人的预制场。我一直在用球员的位置来创建半径,但我想不出来 有什么想法吗 以下是我的目标图像: 将你的预制板放置在你的玩家上方,不管你想以什么半径放置在多远的地方 计算一个角度的多少,你需要旋转多少敌人你想实例化。所以如果你想要5个敌人,你可以这样做: float angle = 360f / 5; 浮动角度=360f/5; 使用Transform.RotateAround以一定角度围绕播放器旋转预制件多次,并实例化预制件的副本。这样你会得到一

2D侧卷轴。我试着在玩家周围绕一个圆圈实例化5个敌人的预制场。我一直在用球员的位置来创建半径,但我想不出来

有什么想法吗

以下是我的目标图像:

将你的预制板放置在你的玩家上方,不管你想以什么半径放置在多远的地方

计算一个角度的多少,你需要旋转多少敌人你想实例化。所以如果你想要5个敌人,你可以这样做:

float angle = 360f / 5;
浮动角度=360f/5; 使用Transform.RotateAround以一定角度围绕播放器旋转预制件多次,并实例化预制件的副本。这样你会得到一个完美的圆圈

或者,如果不想使用RotateAround,可以将单个预制件作为游戏对象的子对象,将子对象的transform.localPosition更改为距其父对象中心任意距离,然后将预制件的父对象变换旋转5次

根据他的指示,我慢慢地找到了可行的解决办法。我相信有一种更漂亮的方法可以做到这一点,我也很想听到其他的意见,但这种方法很管用。以下是我正在做的:

private int num_enemies=5;
float angle =  360f/5;
void Start () {
    player = GameObject.FindGameObjectWithTag ("Player");
     //emptyenemy is a gameobject I have positioned right on top of the player
    //This is hardcoded and needs to change to position itself betwwen the player and the top of the screen

            Vector3 enemyPos = emptyEnemy.transform.position;

    while (num_enemies>0) {
        Instantiate (EnemyPrefab, enemyPos, player.transform.rotation);
        EnemyPrefab.tag = "Enemy" + num_enemies;
        num_enemies--;
        emptyEnemy.transform.RotateAround (player.transform.position, Vector3.forward, angle);
        enemyPos=emptyEnemy.transform.position;
    }
}

我要玩这个,试着让它们绕轨道运行。我也喜欢听到其他人接近我

您可以采用以下几种方法:


  • 创建一个
    parentGameObject
    游戏对象

  • 创建5个子游戏对象;将它们放置在希望实例化放置的位置

  • 使
    parentGameObject.transform.position
    与玩家的
    transform.position
    相等

  • 循环每个子变换,并为每个子变换实例化你的敌人预设:

    foreach (Transform child in parentGameObject.transform) {
        Instantiate(yourPrefab, child.position, Quaternion.identity);
    }
    

  • 将你的预制板放置在你的玩家上方,不管你想以什么半径放置在多远的地方

  • 计算一个角度的多少,你需要旋转多少敌人你想实例化。所以如果你想要5个敌人,你可以这样做:

    float angle = 360f / 5;
    
  • 使用以
    角度围绕播放器旋转预设,无论旋转多少次,并
    实例化预设的副本。这样你会得到一个完美的圆圈


  • 或者,如果您不想使用
    RotateAround
    ,您可以将单个预置作为游戏对象的子对象,将子对象的
    transform.localPosition
    更改为距其父对象中心的任意距离,然后预设的父对象按
    角度进行5次变换。

    您至少需要发布一点您迄今为止所做尝试的示例或描述。可能是任何类型的模式。您是否对圆算法或实例化有问题?屏幕上的位置,还是相对于游戏状态模型的位置?我们需要更多关于你的项目的信息!我可以很好地举例说明,问题直接在于玩家相对于屏幕大小的位置,以及在他周围投出一圈敌人。