C# 试图在团结的玩家周围产生敌人
2D侧卷轴。我试着在玩家周围绕一个圆圈实例化5个敌人的预制场。我一直在用球员的位置来创建半径,但我想不出来 有什么想法吗 以下是我的目标图像: 将你的预制板放置在你的玩家上方,不管你想以什么半径放置在多远的地方 计算一个角度的多少,你需要旋转多少敌人你想实例化。所以如果你想要5个敌人,你可以这样做:C# 试图在团结的玩家周围产生敌人,c#,unity3d,2d,C#,Unity3d,2d,2D侧卷轴。我试着在玩家周围绕一个圆圈实例化5个敌人的预制场。我一直在用球员的位置来创建半径,但我想不出来 有什么想法吗 以下是我的目标图像: 将你的预制板放置在你的玩家上方,不管你想以什么半径放置在多远的地方 计算一个角度的多少,你需要旋转多少敌人你想实例化。所以如果你想要5个敌人,你可以这样做: float angle = 360f / 5; 浮动角度=360f/5; 使用Transform.RotateAround以一定角度围绕播放器旋转预制件多次,并实例化预制件的副本。这样你会得到一
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
游戏对象parentGameObject.transform.position
与玩家的transform.position
相等foreach (Transform child in parentGameObject.transform) {
Instantiate(yourPrefab, child.position, Quaternion.identity);
}
float angle = 360f / 5;
角度围绕播放器旋转预设,无论旋转多少次,并实例化预设的副本。这样你会得到一个完美的圆圈
或者,如果您不想使用
RotateAround
,您可以将单个预置作为游戏对象的子对象,将子对象的transform.localPosition
更改为距其父对象中心的任意距离,然后预设的父对象按角度进行5次变换。您至少需要发布一点您迄今为止所做尝试的示例或描述。可能是任何类型的模式。您是否对圆算法或实例化有问题?屏幕上的位置,还是相对于游戏状态模型的位置?我们需要更多关于你的项目的信息!我可以很好地举例说明,问题直接在于玩家相对于屏幕大小的位置,以及在他周围投出一圈敌人。