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获得位置?
答案 0 :(得分:0)
嗯,转换是一种类型,其中转换是属性类型为Transform的属性。 如果您检索变换,您将始终获得脚本分配给的GameObject的变换。
在您的示例中,变换指的是航点的变换。 如果你想接收角色的变换,你必须使用character.transform检索它。
你可能已经看到过人们捐款了:
private Transform _transform;
我们这样做是为了将当前GameObject的Transform缓存到我们自己的成员中,因为如果你经常这样做,调用transform会很小。但是,我们仍然需要至少调用一次transform来实际检索引用:
private void Awake(){
_transform = transform;
}
编辑: 要设置角色位置,您可以使用:
character.transform.position = someVector3;