什么是变换,什么是变换?

时间:2016-07-27 21:30:14

标签: c# unity3d unity5

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

public class Waypoints : MonoBehaviour {

    public Transform[] waypoint;
    public float patrolSpeed;
    public bool loop = true;
    public int dampingLook = 4;
    public float pauseDuration;
    private float curTime;
    private int currentWaypoint = 0;
    public CharacterController character;

    // Use this for initialization
    void Start () {


    }

    void LateUpdate(){

        if(currentWaypoint < waypoint.Length){
            patrol();
        }else{    
            if(loop){
                currentWaypoint= 0;
            } 
        }
    }

    void patrol(){

        Vector3 nextWayPoint = waypoint[currentWaypoint].position;

        // Keep waypoint at character's height
        nextWayPoint.y = transform.position.y; 

        // Get the direction we need to move to
        // reach the next waypoint
        Vector3 moveDirection = nextWayPoint - transform.position;

变换意味着角色吗?所以transform.position将在这种情况下得到字符位置ThirdPersonController我添加了脚本吗?脚本如何知道属于角色的变换?

如果我正在做变换_transform那么_transform和我现在使用的变换有什么区别呢?

如果我想设置或获取角色起始位置,例如我可以在脚本中创建:public Transform _transform;然后在start函数中:_transform = GetComponent();那么例如我可以从_transform获得位置?

1 个答案:

答案 0 :(得分:0)

嗯,转换是一种类型,其中转换是属性类型为Transform的属性。 如果您检索变换,您将始终获得脚本分配给的GameObject的变换。

在您的示例中,变换指的是航点的变换。 如果你想接收角色的变换,你必须使用character.transform检索它。

你可能已经看到过人们捐款了:

private Transform _transform;

我们这样做是为了将当前GameObject的Transform缓存到我们自己的成员中,因为如果你经常这样做,调用transform会很小。但是,我们仍然需要至少调用一次transform来实际检索引用:

private void Awake(){
   _transform = transform;
}

编辑: 要设置角色位置,您可以使用:

character.transform.position = someVector3;