鼠标拖动检测 - Unity3D

时间:2015-06-17 09:57:27

标签: unity3d camera mouse drag

我正在制作一个游戏,玩家有一个聚光灯,并探索一些地下城(第一人称)。我已经让玩家移动了但我确实怀疑相机旋转。我一直在寻找一些论坛,但我的问题并不完全一样,我是Unity的新手。问题是:如何在屏幕上拖动鼠标的同时移动相机,让玩家看到周围发生的事情?

2 个答案:

答案 0 :(得分:0)

using UnityEngine;
using System.Collections;

public class MouseView : MonoBehaviour 
{
    public float Sensitivity = 0.125f;

    Vector3 _prevMousePosition = Vector3.zero;
    float   _tilt = 0;
    float   _turn = 0;

    void Update () 
    {       
        Vector3 mousePosition = Input.mousePosition;
        if( Input.GetMouseButton( 0 ) )
        {
            _tilt += -( mousePosition.y-_prevMousePosition.y ) * Sensitivity;
            _turn += ( mousePosition.x-_prevMousePosition.x ) * Sensitivity;
        }
        _prevMousePosition = mousePosition;
        transform.localRotation = Quaternion.Euler( _tilt, _turn, 0 );
    }
}

答案 1 :(得分:0)

选中此http://unity3d.com/learn/tutorials/projects/survival-shooter/player-character

  

void OnUpdate(){Turning()}

 void Turning ()
{
    // Create a ray from the mouse cursor on screen in the direction of the camera.
    Ray camRay = Camera.main.ScreenPointToRay (Input.mousePosition);

    // Create a RaycastHit variable to store information about what was hit by the ray.
    RaycastHit floorHit;

    // Perform the raycast and if it hits something on the floor layer...
    if(Physics.Raycast (camRay, out floorHit, camRayLength, floorMask))
    {
        // Create a vector from the player to the point on the floor the raycast from the mouse hit.
        Vector3 playerToMouse = floorHit.point - transform.position;

        // Ensure the vector is entirely along the floor plane.
        playerToMouse.y = 0f;

        // Create a quaternion (rotation) based on looking down the vector from the player to the mouse.
        Quaternion newRotation = Quaternion.LookRotation (playerToMouse);

        // Set the player's rotation to this new rotation.
        playerRigidbody.MoveRotation (newRotation);
    }
}