UnityEngine.Transform不包含本地比例的定义?

时间:2015-10-22 22:48:23

标签: unity3d

我正在尝试移动平台,我的游戏对象可以跳过并随之移动。我可以让对象留在平台上但不会掉头但是当游戏对象在移动平台上时它会伸展或缩小。如果我更新了代码中的局部比例,我认为我可以解决这个问题,但是Unity说它没有本地比例的定义,因此没有。

using UnityEngine;
using System.Collections;

public class trigger : MonoBehaviour {

// Use this for initialization
void Start () {

}

void OnTriggerEnter (Collider other) 
{ 
    other.transform.parent = gameObject.transform;
    //other.transform.localScale (1, 1, 1);
} 
void OnTriggerExit (Collider other) 
{ 
    other.transform.parent = null; 
    //other.transform.localScale (1, 1, 1);
}
}

以防你需要知道我有一个没有网格的立方体对象,其位置和大小与充当触发器的平台相同。万一你想在这里看到我的脚本来移动平台。

using UnityEngine;
using System.Collections;

public class movingPlatforms : MonoBehaviour {

public Vector3 pointB;
public GameObject pig;

IEnumerator Start()
{
    var pointA = transform.position;
    while (true) {
        yield return StartCoroutine(MoveObject(transform, pointA, pointB, 3.0f));
        yield return StartCoroutine(MoveObject(transform, pointB, pointA, 3.0f));
    }
}

IEnumerator MoveObject(Transform thisTransform, Vector3 startPos, Vector3 endPos, float time)
{
    var i= 0.0f;
    var rate= 1.0f/time;
    while (i < 1.0f) {
        i += Time.deltaTime * rate;
        thisTransform.position = Vector3.Lerp(startPos, endPos, i);
        yield return null; 
    }
}

void OnCollisionEnter (Collision col)
{
    if(col.gameObject.name == "PIG")
    {
        //this.transform.position = pig.transform.position;
        //pig.transform.position += this.transform.position;
    }
}

void triggerOnStay(Collider collider)
{
    if (collider.tag == "PIG")
    {
        collider.transform.parent = transform.parent;
    }
}
}

有没有办法让我的脚本中定义区域设置比例,或者如果不是让我的游戏对象随平台移动的更好方法,任何帮助都将不胜感激。

更新:我将区域设置比例更新更改为other.transform.localScale = Vector3.one;它对于On触发器退出工作正常,但对于触发器输入我得到这个picture

1 个答案:

答案 0 :(得分:2)

Transform有一个Transform.localScale的定义,问题是你是如何尝试访问该元素的,没有一个名为localScale()的方法你必须使用变量localScale(内部是一个getter / setter)。

<小时/> 而不是

other.transform.localScale(1, 1, 1);

尝试

other.transform.localScale = Vector3.one;

<小时/> 内部实施:

internal implementation of localScale getter/setter