![](/img/trans.png)
[英]Raycasting and 2d arrays not working as expected with Rubik's Cube in Unity
[英]Unity 2D raycasting not going where expected
我有一个玩家和一个目标方向(表示为归一化Vector2,例如(1.0,0)表示指向右边)。 我想朝目标方向投射玩家的光线,直到它碰到我的墙层的一部分。 我不确定为什么,但是现在,如Debug.DrawRay所描绘的那样,光线投射根本没有朝着正确的方向瞄准。 这是我的相关代码:
private void Update() {
SetAimDirection();
DoRaycast();
}
private void DoRaycast() {
if (Input.GetButtonDown("Cast")) {
RaycastHit2D hit = Physics2D.Raycast(transform.position, aimDirection, groundLayer);
if (hit.collider != null) {
Debug.Log(hit.collider.tag + " " + hit.point + " aim: " + aimDirection);
Debug.DrawRay(transform.position, hit.point);
}
}
}
private void SetAimDirection() {
Vector2 aim = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
if (aim.magnitude == 0) {
aim.x = facingRight ? 1 : -1;
}
aimDirection = aim.normalized;
// Draw the reticle a constant radius from the player in aimDirection.
Vector2 reticlePosition = new Vector2(body.position.x + (aimDirection.x * reticleRadius), body.position.y + (aimDirection.y * reticleRadius));
crosshair.transform.position = new Vector3(reticlePosition.x, reticlePosition.y, 0);
}
这是一个gif图像,可以更好地说明问题(白色光线是从玩家中心穿过红色十字准线,但不是):
因此,这是我自己的调试功能的错误; 我正在使用Debug.DrawRay
而不是Debug.DrawLine
。 区别在于, DrawRay
具有起点和方向,而我给它指定了起点和终点,从而完全弄乱了结果。 使用DrawLine
解决了我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.