【发布时间】:2014-04-24 19:01:48
【问题描述】:
我正在制作一个类似口袋妖怪的游戏,你可以在其中四处走动。 这是一个自上而下的二维游戏。 但是我试图检测我面前的某个瓷砖。
我的角色在 Y 1,地图在 Y 0。 我已尝试转发 raycast,但它并没有真正起作用。
这是我尝试过的:
if (Input.GetKey("w") && isMoving == false)
{
bool disableMove = false;
RaycastHit hit;
if (Physics.Raycast(transform.position, Vector3.forward, out hit, 2))
{
var distanceToGround = hit.distance;
Debug.Log("HIT");
if (hit.collider.gameObject.tag == "collision")
{
disableMove = true;
Debug.Log("Tree");
}
}
if (!disableMove)
{
Calculatewalk();
anim.Play("WalkingUp");
increment = 0;
isMoving = true;
startPoint = transform.position;
endPoint = new Vector3(transform.position.x, transform.position.y, transform.position.z + 1);
}
disableMove = false;
}
【问题讨论】:
-
"didnt really work" 很少告诉我们您遇到的问题。编译错误?运行时异常?这些是什么?您是否在 Google 上搜索过该错误以找出它是什么以及为什么会发生?还是意外的行为?发生了什么?你期望会发生什么?您已经尝试过什么解决此问题?请详细说明。
-
这会在观察方向上寻找任何一棵树,不管它有多远,你应该限制长度,另外,如果你将地图组织在单元格中,是不是更容易测试附近的单元格?
-
什么都没有发生,它没有检测到任何东西。我能够直接走过它。 @tnw
-
您是否在地图图块中添加了对撞机?
-
既然是 2D 游戏,您是否使用 2D 碰撞器和默认的 Unity 2D 设置?如果是这样,您应该使用Physics2D.Raycast,而 Vector3 将是 (0,1,0) 或 Vector3.Up
标签: c# unity3d 2d raycasting