Unity2d播放器根据鼠标位置

时间:2018-04-04 20:59:38

标签: unity3d rotation 2d

我尝试过Atan2,我尝试过任何欧拉角度,我已经尝试过Unity3d的所有网站,我得到了三个结果:

我可以慢慢移动鼠标,我可以以光速移动它,播放器的旋转是固定的,无论是抬头还是向下。

播放器旋转,但不是看着鼠标。就好像它正在做它自己的事情。

它在除z轴之外的任何东西上旋转。

我完全没有想法,完全没出来。我已经尝试了所有方法,包括下载几个slither.io淘汰项目来弄清楚他们是如何完成任务的,但是没有一个能够工作

如果你在掌握我需要实现的目标时遇到困难,那么此刻我没有代码。但是有一个网站与我正在努力实现的目标相同。

播放surviv.io查看播放器如何根据鼠标旋转。这就是我想要完成的事情。

1 个答案:

答案 0 :(得分:0)

我没有测试过这个,但是......

如果您的背景屏幕可以进行射线照射,以便光线与光线发生碰撞,则下面的代码应该有效。然后使用Transform.LookAt()中的坐标稍微玩一下。

基本上它会执行这些步骤。

1 - 将光线从屏幕射到鼠标位置,保存对“命中”变量中所有内容的引用。

2 - 如果有任何事情被击中,请旋转球员变换以查看击中位置。

public LayerMask RaycastCollidableLayers;
public RaycastHit Hit;
public float CheckDistance = 200f;
public Transform Player;

void PerformRaycast(){
//Set up ray
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//Fire ray
Physics.Raycast(ray, out Hit, CheckDistance + 0.1f, RaycastCollidableLayers);
if (Hit.collider == null)
{
    //Debug.Log("Raycast hit nothing");
    return;
}
else //Ray hit something
    {
    //Look at Hit.point on x and y axes.
    Player.LookAt(new Vector3(Hit.point.x, Hit.point.y, 0f), Vector3.up); //Ignoring z axis, may need to be another axis. Vector3.up sets the up direction.
    }
}

来源:

让我知道它对你有用。

相关问题