Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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_Targeting - Fatal编程技术网

C# 我如何让敌人的导弹以玩家为目标而不是原点?

C# 我如何让敌人的导弹以玩家为目标而不是原点?,c#,unity3d,targeting,C#,Unity3d,Targeting,我的游戏有这样一个关卡,敌人飞进来并在游戏中发射导弹,他们应该在被发射的那一刻瞄准本地的玩家,但是当他们被发射时,他们只会在玩家从左向右移动时击中玩家,当它向前移动时,导弹正好飞到头顶上 void Start() //targeting the player { playerManager = GameObject.FindGameObjectWithTag("PlayerManager").transform; //NB: it is tracking wherever the pla

我的游戏有这样一个关卡,敌人飞进来并在游戏中发射导弹,他们应该在被发射的那一刻瞄准本地的玩家,但是当他们被发射时,他们只会在玩家从左向右移动时击中玩家,当它向前移动时,导弹正好飞到头顶上

void Start() //targeting the player
{
    playerManager = GameObject.FindGameObjectWithTag("PlayerManager").transform; //NB: it is tracking wherever the playerManager is placed on the X axis, but NOT the playerManager directly

    //target = new Vector3(playerManager.position.x, playerManager.position.y); //this is the original line

    // target = new Vector3 (playerManager.transform.position); //this was recommended on unity answers but it returns an error.

    rb.velocity = transform.forward * speed; //addition, tells it to shoot forward
}
我想让导弹在沿z轴移动时一直瞄准玩家

当玩家只能左右移动时,它会按预期工作,但当他们向前移动时,导弹会飞到头顶上

此行:target=newvector3(playerManager.transform.position);返回以下错误消息:


错误CS1729’vcto3'不包含一个构造1个参数的构造函数

你想让导弹考虑玩家的Z位置,但是你的第一个选项中的“目标”向量第三缺少第三个参数,因此默认为(x,y,0)而不是(x,y,z)。你可以做:

target = new Vector3(playerManager.position.x, playerManager.position.y, playerManager.position.z);
或:


请注意,Vector3由三个浮点数构成,而不是由Vector3构成,这就是playerManager.transform.position。您可以跳过构造函数,只需将值设置为相等。

好吧,您已经获得了玩家转换,然后您发送导弹“前进”,但前进可能不会朝向玩家。。。如图所示,矢量3需要3个点,x,y,z。。。。在任何时候,你似乎都没有在你的代码中使用玩家的位置,所以它指向玩家的几率似乎很低
target = playerManager.transform.position;