Unity - Gameobject看看鼠标

时间:2016-04-14 06:37:10

标签: c# unity3d unityscript unity5

我遇到了问题。

我现在的基本设置,两个对象:我的相机和我的播放器对象。

玩家通过WASD上的Transform移动,并且应该在鼠标上旋转 运动。

相机自上而下(在轻微的#34; 3ps"样式角度,使玩家对象保持中心到相机的视角,并根据玩家的旋转旋转。

这是玩家运动脚本: http://pastebin.com/SvN8FuWs

这是玩家轮换脚本:http://pastebin.com/uzZ7SKFL

我所展示的所有内容的结果都是旋转,但它并没有旋转到鼠标物理位置。

当我用鼠标绘制圆圈时,它会完全旋转,但不能始终指向鼠标所在的位置。我不确定为什么。

所需的结果是相机(玩家对象的孩子)跟随玩家的移动和旋转,同时玩家使用其移动脚本移动,并旋转以指向鼠标所在的位置。

有人有任何想法吗?提前谢谢。

编辑:如果有帮助,当前轮换就像这样。

在播放器周围用鼠标绘制大圆圈会使旋转速度变慢,而不是玩家周围非常紧凑的圆圈。

1 个答案:

答案 0 :(得分:2)

我不确定我是否明白你要做什么。如果你想尝试做类似游戏“死亡之国”的事情,那么我会建议这样的事情:

MouseLook.cs

void Update()
{
    Vector3 mouse = Input.mousePosition;
    Vector3 mouseWorld = Camera.main.ScreenToWorldPoint(mouse.x, 
                                                        mouse.y,
                                                        player.transform.y);
    Vector3 forward = mouseWorld - player.transform.position;
    player.transform.rotation = Quaternion.LookRotation(forward, Vector3.up);
}

如果您希望相机随播放器一起移动和旋转,则只需将相机作为播放器对象的子项。

编辑:我收到了一些错误,我的错,这是正确的代码。

void Update()
{
    Vector3 mouse = Input.mousePosition;
    Vector3 mouseWorld = Camera.main.ScreenToWorldPoint(new Vector3(
                                                        mouse.x, 
                                                        mouse.y,
                                                        player.transform.position.y));
    Vector3 forward = mouseWorld - player.transform.position;
    player.transform.rotation = Quaternion.LookRotation(forward, Vector3.up);
}