【问题标题】:UnityEngine.Transform does not contain a definition for local scale?UnityEngine.Transform 不包含本地比例的定义?
【发布时间】:2015-10-23 07:31:04
【问题描述】:

我正在尝试让我的游戏对象可以跳上并随之移动的移动平台。我可以让物体留在平台上但不会掉下来,但是当游戏物体在移动平台上时,它会被拉伸或收缩。我想如果我在代码中更新本地比例,我可以解决这个问题,但 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 trigger Exit 但对于 on trigger Enter 我得到了这个picture

【问题讨论】:

    标签: unity3d


    【解决方案1】:

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


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

    试试

    other.transform.localScale = Vector3.one;
    


    内部实现:

    【讨论】:

    • 它似乎适用于 on trigger 退出,但是当我在 on triggerEnter 中应用它时,即使它说他在检查器中缩放相同,视图也会变得混乱。
    • 你有日志吗?你能试试如果你评论前一行会发生什么,我的意思是 (other.transform.parent = null; )?
    • 我有日志是什么意思?
    • 我担心的是如果你有一个异常(你可以检查控制台输出)如果不是问题可能是代码的逻辑而不是一个统一的问题。
    • 我没有遇到异常,所以逻辑有问题。我认为是相机出了问题,因为当游戏对象离开平台时视图恢复正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    相关资源
    最近更新 更多