对象检测到我的光线RayCast并激活Lerp

时间:2019-01-20 11:10:39

标签: unity3d unityscript

我正在尝试制作一个脚本,该脚本将检测我的设定为7的光线的光线投射何时击中了几个不同的对象。一旦物体检测到射线,它将启动我的lerp(颜色在检查器中从alpha(0)-alpha(1)设置)。我已经设置了lerp并检查了它是否在更新功能中运行(确实)。我的目标是,一旦光线击中束缚对象,立即激活束缚。

我尝试浏览文档(ray,raycast,raycasthit等),我发现还必须更改图层,而我的下一个操作步骤是将所有其他对象放在IgnoreRayCast图层上,只是不确定是否最佳或最有效的方式,我也尝试了(https://www.reddit.com/r/Unity3D/comments/6ryx76/raycast_for_activating_objects/)中的一些方法。我是一个刚接触团结的新手,只从事了几个月的编程工作,甚至很难理解如何正确阅读文档以执行中继的内容。任何帮助都将不胜感激,不是听起来太无知,而是外行的话(如果可能)?

(通过lerp的对象的脚本)

public class enumLight : MonoBehaviour
{
    public float speed = 1;
    public Color startColor;
    public Color endColor;
    float startTime;
    // Start is called before the first frame update

    void Start()
    {
        startTime = Time.time;
    }

    // Update is called once per frame
    void Update()
    {
        RaycastHit hit;
        float t = (Time.time - startTime) * speed;
        GetComponent<Renderer>().material.color = Color.Lerp(startColor, endColor, t);
        //Debug.Log(Color.Lerp(startColor, endColor, t));
        //Debug.Log(hit.transform.name);

        //hitByray();
    }
    void hitByray()
    {
        Debug.Log("I was hit");
    }
}

(根据我的说法,光线广播已打开)

//hold the camera
    public Camera lightRay;
    //camera range for raycast
    public float lightRange = 7f;
    //reference the puzzle
    public GameObject LightBox;
    LightPuzzle lightPuzzle;



    // Start is called before the first frame update
    void Start()
    {
        lightPuzzle = LightBox.GetComponent<LightPuzzle>();

    }

    // Update is called once per frame
    void Update()
    {
        shoot();

    }

    void shoot()
    {
        RaycastHit hit;

        if (Physics.Raycast(transform.position, -Vector3.up, out hit))
        {
            hit.transform.SendMessage("hitByRay");
        }

    if (Physics.Raycast(lightRay.transform.position, lightRay.transform.forward, out hit, lightRange))
    {
       Debug.Log(hit.transform.name);
        if (hit.distance < lightRange)
        {

        }
    }
}

}

总而言之,我希望具有lerp的物体能够检测到上面带有射线投射的光,以激活存在的lerp。

0 个答案:

没有答案