Legacy Documentation: Version 2018.2 (Go to current version)
LanguageEnglish
  • C#

Transform.position

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Switch to Manual
public Vector3 position;

Description

The world space position of the Transform.

The position property of a GameObject’s Transform, which is accessible in the Unity Editor and through scripts. Alter this value to move a GameObject. Get this value to locate the GameObject in 3D world space.

The following example updates the position of a sphere. It bounces up and down and rotates in a circle.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// Transform.position example. // // Animate a sphere around a circle and bounce up and down.

public class ExampleScript : MonoBehaviour { private Vector3 spherePosition; private float xzPosition, yPosition; private float increaseXZPosition, increaseYPosition;

void Awake() { // Three seconds per circular rotation. increaseXZPosition = (2.0f * Mathf.PI) / 3.0f;

// Random speed up/down. increaseYPosition = (2.0f * Mathf.PI) / 1.3f;

// Create a floor for the sphere to bounce on. GameObject quad; quad = GameObject.CreatePrimitive(PrimitiveType.Quad); quad.transform.rotation = Quaternion.Euler(90, 0, 0); quad.transform.localScale = new Vector3(8, 8, 1);

// Sphere is 1 unit in size. Drop floor by half this. quad.transform.position = new Vector3(0.0f, -0.5f, 0.0f);

// Change the camera position and rotation. Camera.main.transform.position = new Vector3(2.5f, 7.5f, 0.8f); Camera.main.transform.rotation = Quaternion.Euler(65, -105, 0); }

void Update() { // Move sphere around the circle. spherePosition = new Vector3(2.0f * Mathf.Sin(xzPosition), 4.0f * Mathf.Sin(yPosition), 2.0f * Mathf.Cos(xzPosition)); transform.position = spherePosition;

// Update the rotating position. xzPosition += increaseXZPosition * Time.deltaTime; if (xzPosition > 2.0f * Mathf.PI) { xzPosition = xzPosition - 2.0f * Mathf.PI; }

// Update the up/down position. yPosition += increaseYPosition * Time.deltaTime; if (yPosition > Mathf.PI) { yPosition = yPosition - Mathf.PI; } }

// Display the changing position of the sphere. void OnGUI() { GUIStyle fontSize = new GUIStyle(GUI.skin.GetStyle("label")); fontSize.fontSize = 24; GUI.Label(new Rect(20, 20, 300, 50), "Position: " + spherePosition.ToString("F2"), fontSize); } }
对文档有任何疑问,请移步至开发者社区提问,我们将尽快为您解答