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