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;