我写了一些代码,该代码应该从游戏对象的肩膀发出光线,并经过游戏对象的手。这是为了给出鼠标的方向,因此,如果我的角色捡起一个物品,他们便可以在该方向上使用该物品,即枪在该方向上射击。目前,我只能绘制演员表以对其进行调试,因为演员表从正确的位置发射,但没有穿过手。香港专业教育学院基于先前问题的答案尝试了此代码的多次迭代,但似乎不起作用。游戏是一个2.5D侧面滚动器。
pos.x = transform.position.x;
pos.y = transform.position.y -1.4f;
pos1.x = shoulder.transform.position.x;
pos1.y = shoulder.transform.position.y;
pos1.z = 15f;
pos.z =0f;
RaycastHit info;
Debug.DrawRay(pos1, pos, Color.yellow);
该代码位于手动游戏对象上,当我从原始位置移动包机时,它也会做一些奇怪的事情,例如翻转方向,只旋转一半并且不会向相反方向发出射线。
答案 0 :(得分:1)
从您先前拥有的向量开始:
// Hand
pos.x = transform.position.x;
pos.y = transform.position.y -1.4f;
pos.z = 0f;
// Shoulder
pos1.x = shoulder.transform.position.x;
pos1.y = shoulder.transform.position.y;
pos1.z = 15f;
从肩膀矢量中减去手矢量以获得两点之间的距离(或增量)。
Vector3 dir = pos1 - pos;
// For bonus point you can set the length of the ray by using dir as a unit vector
public float length;
dir = dir.normalized * length;
最后将肩部的位置和包含射线的方向和长度的新方向向量馈入函数。
Debug.DrawRay(pos1, dir, Color.yellow);