c# - 我怎样才能在播放模式下沿特定轴获取播放器的位置?

标签 c# unity3d

我的球员在比赛期间向前跑,所以我想做的是沿着特定轴存储他的当前位置,让我们在更新函数内的变量中说 z 并在其他地方使用该位置。我还想知道我们必须使用哪种数据类型来存储这样的值,例如玩家在 z 轴上的当前位置,如果这样做甚至可能的话。我在某处看到这段代码:-

var playerPos:Vector3 = playerObject.transform.position;

但是我不知道它是如何工作的

最佳答案

你很接近,但你代码中的当前语法是针对 Javascript 的。

您使用 transform.position 获取所有轴的位置。 transform.position 返回一个 Vector3 并且 Vector3 包含游戏对象位置的所有轴。Vector3 xyz 属性都是 float 数据类型。

访问位置:

假设 playerObject 是您的游戏对象的名称,下面是如何访问每个轴的示例。

获取X轴

float x = playerObject.transform.position.x;

获取Y轴

float y = playerObject.transform.position.y;

获取Z轴

float z = playerObject.transform.position.z;

您还可以一次获取位置并将其存储到Vector3 变量中,然后从那里访问每个单独的轴:

获取所有轴(x,y,z)

Vector3 playerPos = playerObject.transform.position;
float x = playerPos.x;
float y = playerPos.y;
float z = playerPos.z;

修改位置:

修改位置不同于访问它。你可以这样访问

float x = playerObject.transform.position.x;

但是不能像这样改变x:

playerObject.transform.position.x = 6f;

您必须创建一个新的Vector3,修改您想要的轴(xyz ),然后用新变量 (Vector3) 更改 transform.position 变量。

它应该是这样的:

 Vector3 newPos = playerObject.transform.position;
 newPos.x = 5f;
 newPos.y = 4f;
 newPos.z = 3f;
 playerObject.transform.position = newPos;

我对您的建议是始终使用 Documentation .它向您展示了每个属性或方法返回的内容。这将防止你问这样的问题。例如,Transform.position返回 Vector3

当您单击那个 Vector3 时,您会看到许多其他可以从中访问的变量。

enter image description here

关于c# - 我怎样才能在播放模式下沿特定轴获取播放器的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39203238/

相关文章:

c# - UWP 使用中的 SecureString

c# - NUnit 不适用于 Visual Studio 2010?

c# - 限制类型以允许在 C# 中进行加法/减法运算 (+/-)

regex - sed:替换多行

c# - 用首次出现索引替换列表中 int 的有效方法

c# - 生成新对象到随机对象的位置

c# - Polly 不会抛出一些异常?

c# - 在呈现页面后尝试执行某些操作,而不仅仅是加载到 wpf 中

c# - Unity Ads 无法在 Android 设备上运行,Advertisement.IsReady() 返回 false

c# - 更改场景时 WebCamTexture 崩溃