旋转变换的Unity 2D光线投射
本文关键字:光线投射 2D Unity 旋转变换 | 更新日期: 2023-09-27 18:20:20
我正试图在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);