繁体   English   中英

通过旋转变换进行Unity 2D射线广播

[英]Unity 2D Raycasting from a Rotating Transform

我正在尝试在Unity 2d中创建视野。 我正在从旋转的游戏对象投射光线投射,该游戏对象根据角色所处的位置旋转。 但是,此字符来回移动,因此当他们向左移动时,我将transform.scale设置为-1。 问题是当我这样做时,射线广播不会随着角色改变方向并保持指向正确! 这是代码,我可能缺少明显的东西! 任何帮助,将不胜感激!

        Transform parent;
    float vision_angle_ = 50;
    float direction;
    Vector3 angle;
    Vector2 position;
    Quaternion q;
    int x = 10;

    void Start ()
    {
            parent = transform.parent;
    }

    void Update ()
    {

            direction = parent.GetComponent<Behaviour>().direction;

            angle = new Vector2 (x, Mathf.Tan ((vision_angle_) * .5f * Mathf.Deg2Rad) * x);
            q = Quaternion.AngleAxis (1, -transform.forward);       
            position = new Vector2 (transform.position.x, transform.position.y);

            for (float i = 0; i < 50; i++) {
                    angle = q * angle;
                    RaycastHit2D tile_hit = Physics2D.Raycast (position, transform.TransformDirection (angle), 10);
                    Debug.DrawRay (position, transform.TransformDirection (angle), Color.green);
            }       

    }

TransformDirection不会考虑转换的规模。 您可以调整以补偿:

Vector2 direction = transform.TransformDirection(angle);
if (transform.localScale.x < 0f) {
    direction.x = -direction.x;
}

RaycastHit2D tile_hit = Physics2D.Raycast(position, direction, 10);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM