Unity3d 移动鼠标时如何旋转播放器?

Unity3d 移动鼠标时如何旋转播放器?,unity3d,rotation,unityscript,Unity3d,Rotation,Unityscript,我的问题的意思是,例如,当我向左移动鼠标时,如何使玩家自动旋转,我的整个角色身体将旋转,并将其旋转限制回2D视图 类似于“Rochard”游戏,如果你们知道的话。但我很难找到答案 这是我的代码: #pragma strict var spinx : int = 0; var spiny : int = 0; var spinz : int = 0; function Update () { transform.Rotate(spinx, spiny, spinz); } 此脚本应根

我的问题的意思是,例如,当我向左移动鼠标时,如何使玩家自动旋转,我的整个角色身体将旋转,并将其旋转限制回2D视图

类似于“Rochard”游戏,如果你们知道的话。但我很难找到答案

这是我的代码:

#pragma strict

var spinx : int = 0;
var spiny : int = 0;
var spinz : int = 0;

function Update () {
    transform.Rotate(spinx, spiny, spinz);
}

此脚本应根据鼠标位置旋转对象

using UnityEngine;
using System.Collections;

     public class MouseLook : MonoBehaviour {

         void Update () {
            Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.z, 10);
            Vector3 lookPos = Camera.main.ScreenToWorldPoint(mousePos);
            lookPos = lookPos - transform.position;
            float angle = Mathf.Atan2(lookPos.z, lookPos.x) * Mathf.Rad2Deg;
            transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);

         }
     }

此脚本应根据鼠标位置旋转对象

using UnityEngine;
using System.Collections;

     public class MouseLook : MonoBehaviour {

         void Update () {
            Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.z, 10);
            Vector3 lookPos = Camera.main.ScreenToWorldPoint(mousePos);
            lookPos = lookPos - transform.position;
            float angle = Mathf.Atan2(lookPos.z, lookPos.x) * Mathf.Rad2Deg;
            transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);

         }
     }

您可以从unity本身导入标准播放器控件包,并根据自己的喜好编辑第一人称控制器。当我想在游戏中使用一个能满足你需求的控件时,我通常会这样做。

你可以从unity本身导入标准玩家控件包,并根据自己的喜好编辑第一人称控制器。当我想在游戏中使用一个控件来做你想做的事情时,我倾向于这样做。

下面的脚本应该根据鼠标位置旋转你的对象

 using UnityEngine;
 using System.Collections;

 public class RotateClass : MonoBehaviour {
     public float horizontalSpeed = 2.0F;
     public float verticalSpeed = 2.0F;
     void Update() {
         float h = horizontalSpeed * Input.GetAxis("Mouse X");
         float v = verticalSpeed * Input.GetAxis("Mouse Y");
         transform.Rotate(v, h, 0);
     }
 }

以下脚本应根据鼠标位置旋转对象

 using UnityEngine;
 using System.Collections;

 public class RotateClass : MonoBehaviour {
     public float horizontalSpeed = 2.0F;
     public float verticalSpeed = 2.0F;
     void Update() {
         float h = horizontalSpeed * Input.GetAxis("Mouse X");
         float v = verticalSpeed * Input.GetAxis("Mouse Y");
         transform.Rotate(v, h, 0);
     }
 }

首先,我真的很抱歉用C写。但我希望它能帮助你。此脚本附加到玩家游戏对象

private Vector3 MousePositionViewport = Vector3.zero;
private Quaternion DesiredRotation = new Quaternion();
private float RotationSpeed = 15;

void Update () {
    MousePositionViewport = Camera.main.ScreenToViewportPoint (Input.mousePosition);
    if (MousePositionViewport.x >= 0.6f) {
        DesiredRotation = Quaternion.Euler (0, 90, 0);
    } else if(MousePositionViewport.x < 0.6f && MousePositionViewport.x > 0.4f){
        DesiredRotation = Quaternion.Euler (0, 270, 0);
    }else {
        DesiredRotation = Quaternion.Euler (0, 180, 0);
    }
    transform.rotation = Quaternion.Lerp (transform.rotation, DesiredRotation, Time.deltaTime*RotationSpeed);
}
private Vector3 MousePositionViewport=Vector3.0;
私有四元数DesiredRotation=新四元数();
专用浮动旋转速度=15;
无效更新(){
MousePositionViewport=Camera.main.ScreenToViewportPoint(Input.mousePosition);
如果(MousePositionViewport.x>=0.6f){
理想旋转=四元数.欧拉(0,90,0);
}else if(MousePositionViewport.x<0.6f&&MousePositionViewport.x>0.4f){
DesiredRotation=Quaternion.Euler(0,270,0);
}否则{
理想旋转=四元数.欧拉(0,180,0);
}
transform.rotation=Quaternion.Lerp(transform.rotation,DesiredRotation,Time.deltaTime*RotationSpeed);
}

首先,我真的很抱歉用C#写它。但我希望它能帮助你。此脚本附加到玩家游戏对象

private Vector3 MousePositionViewport = Vector3.zero;
private Quaternion DesiredRotation = new Quaternion();
private float RotationSpeed = 15;

void Update () {
    MousePositionViewport = Camera.main.ScreenToViewportPoint (Input.mousePosition);
    if (MousePositionViewport.x >= 0.6f) {
        DesiredRotation = Quaternion.Euler (0, 90, 0);
    } else if(MousePositionViewport.x < 0.6f && MousePositionViewport.x > 0.4f){
        DesiredRotation = Quaternion.Euler (0, 270, 0);
    }else {
        DesiredRotation = Quaternion.Euler (0, 180, 0);
    }
    transform.rotation = Quaternion.Lerp (transform.rotation, DesiredRotation, Time.deltaTime*RotationSpeed);
}
private Vector3 MousePositionViewport=Vector3.0;
私有四元数DesiredRotation=新四元数();
专用浮动旋转速度=15;
无效更新(){
MousePositionViewport=Camera.main.ScreenToViewportPoint(Input.mousePosition);
如果(MousePositionViewport.x>=0.6f){
理想旋转=四元数.欧拉(0,90,0);
}else if(MousePositionViewport.x<0.6f&&MousePositionViewport.x>0.4f){
DesiredRotation=Quaternion.Euler(0,270,0);
}否则{
理想旋转=四元数.欧拉(0,180,0);
}
transform.rotation=Quaternion.Lerp(transform.rotation,DesiredRotation,Time.deltaTime*RotationSpeed);
}