C# 将Vector2Int转换为Vector3
我在游戏中遇到以下情况: 我有一个矩阵6x6,我将玩家的位置存储在C# 将Vector2Int转换为Vector3,c#,unity3d,C#,Unity3d,我在游戏中遇到以下情况: 我有一个矩阵6x6,我将玩家的位置存储在矢量2int中,如图所示。 当他被子弹击中时,我会在他的左边、右边、后面和前面实例化一个游戏对象。但是,我无法使用Vector2Int来执行此操作,我已经尝试过这样做,但收到一条错误消息: private void OnTriggerEnter(Collider other) { if (other.transform.tag == "Player2") { pla
矢量2int
中,如图所示。
当他被子弹击中时,我会在他的左边、右边、后面和前面实例化一个游戏对象。但是,我无法使用Vector2Int
来执行此操作,我已经尝试过这样做,但收到一条错误消息:
private void OnTriggerEnter(Collider other)
{
if (other.transform.tag == "Player2")
{
player.Health += Healing;
Instantiate(Flame, player.GridPosition.y+1, Quaternion.identity);
Instantiate(Flame, player.GridPosition.y -1, Quaternion.identity);
Instantiate(Flame, player.GridPosition.x + 1, Quaternion.identity);
Instantiate(Flame, player.GridPosition.x - 1, Quaternion.identity);
Destroy(this.gameObject);
}
}
有没有一种方法可以将这个
Vector2Int
转换成Vector3
?那么Vector3
有一个构造函数,它接受两个浮点数,并将另一个浮点数初始化为零Vector2Int
有两个属性.x
和.y
表示向量的x和y部分
结合这些,我们得到Vector3 Vector3=new Vector3(player.GridPosition.x,player.GridPosition.y)
作为一个向量3,其x和y分量与Vector2Int相同
现在,当您在自己的自定义坐标系和Unity坐标系之间进行转换时,这是否会如您所期望的那样进行操作是另一回事。如果栅格的大小不是1x1 Unity units per tile,则可能需要按栅格的大小进行缩放
编辑:由于y位于Unity中,您可能需要的是
Vector3(player.GridPosition.x,0,player.GridPosition.y)
以便网格y位置成为世界z位置。您可以做的是使用Vector2中的值创建一个新的Vector3:
float defaultZValue;
private void OnTriggerEnter(Collider other)
{
if (other.transform.tag == "Player2")
{
player.Health += Healing;
Instantiate(Flame, new Vector3(player.GridPosition.x, player.GridPosition.y+1, defaultZValue), Quaternion.identity);
Instantiate(Flame, new Vector3(player.GridPosition.x, player.GridPosition.y-1, defaultZValue), Quaternion.identity);
Instantiate(Flame, new Vector3(player.GridPosition.x+1, player.GridPosition.y, defaultZValue), Quaternion.identity);
Instantiate(Flame, new Vector3(player.GridPosition.x-1, player.GridPosition.y, defaultZValue), Quaternion.identity);
Destroy(this.gameObject);
}
}
据我所知,您的z位置不会改变,因此您可以对每个
实例化使用相同的值,您可以在类中定义它。此外,您可能还需要为实例化过程创建另一个方法,以使代码更清晰。player.GridPosition.y+1甚至不是矢量2int,而是int?对于OP,其矢量的y可能是Z轴,而不是y已添加了一个编辑,以澄清y在单位中指向哪个方向。