繁体   English   中英

如何使用 c# 在 Unity 中仅修改 1 个维度?

[英]How do i modify only 1 dimension in Unity using c#?

我正在做一个简单的游戏来开始统一,有一个立方体可以直行并躲避随机产生的其他立方体(障碍物)。 为了使障碍物总是在玩家面前产生,我设置了一个代码,使 7 个产生 position(块在其中随机生成)跟随玩家的坐标,但在 Z 上加 100,因此它们不会在玩家上方生成。 现在,我的问题是,当生成障碍物时,它们的 X position 也会改变,当我 go 与玩家一起向右或向左时,它们会从平台上掉下来。 我怎样才能让他们只跟随播放器的 Z position 而不是 X? 这是使生成器更改 position 的代码:

public class MoveSpawn : MonoBehaviour
{

    public Transform player;
    public Vector3 offset;


    // Update is called once per frame
    void Update()
    {
        transform.position = player.position + offset;

    }
}

在将其添加到偏移量之前,我只需将玩家的 position 乘以 (0,0,1) (换句话说, Vector3.forward ):

public class MoveSpawn : MonoBehaviour
{

    public Transform player;
    public Vector3 offset;


    // Update is called once per frame
    void Update()
    {
        transform.position = player.position * Vector3.forward + offset;

    }
}

哦,这很容易。 因此,如果您只想查看 Cube 或 Unity 中的任何 object 的 Z(或任何其他)坐标,您可以简单地使用: transform.position.z这与向量的操作相同。 像这样的东西:

Vector3 offset = ...;
Debug.Log(offset.x) //returns x coordinate of offset

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM