【发布时间】:2017-02-23 06:46:12
【问题描述】:
对于 3D 第一人称控制器游戏,我将屏幕上的滑动转换为方向矢量。 一个物体被射向这个方向。 我的相机可以根据虚拟操纵杆的输入进行旋转。 当我不旋转并使用滑动拍摄对象时,它会朝正确的方向移动。 但是,当我旋转相机时,它不会朝预期的方向移动。 方向应该适应相机的旋转。
如何将矢量的方向校正为相机的旋转?
PS: 私信我进一步说明
//Converting swipe direction to 3D direction
public class TouchPair
{
public Vector2 startPos;
public int fingerId;
}
private TouchPair touchPair;
void Update()
{
foreach (Touch touch in Input.touches)
{
Vector2 touchPos = touch.position;
if (touch.phase == TouchPhase.Began)
{
Ray ray = cam.ScreenPointToRay(touchPos);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
//The player is wielding a bomb that is visible on the screen.
//only swipes that start from this object should count
if (hit.transform.tag == "Bomb")
{
touchPair = new TouchPair();
touchPair.startPos = touchPos;
touchPair.fingerId = touch.fingerId;
}
}
}
else if (touch.phase == TouchPhase.Ended)
{
if (touchPair.fingerId == touch.fingerId)
{
Vector2 endPos = touchPos;
Vector2 swipeDirectionRaw = endPos - touchPair.startPos;
float magnitude = swipeDirectionRaw.magnitude;
if (magnitude >= minSwipeLength)
{
BombController BombController = GameObject.FindWithTag("Bomb").GetComponent<BombController>();
BombController.Throw(swipeDirectionRaw.normalized, magnitude);
}
}
}
}
}
public void Throw(Vector2 direction, float magnitude)
{
//Setup variables for throw
throwDirection = new Vector3(direction.x, 0.0f, direction.y);
throwSpeed = magnitude * throwForce;
}
【问题讨论】:
-
“我正在将屏幕上的滑动转换为方向向量。” -- 你能告诉我们这样做的代码吗?我假设如果您使用
Camera.ScreenToWorldPoint,那么您不会有问题。