【问题标题】:How to rotate the player when moving your mouse?移动鼠标时如何旋转播放器?
【发布时间】:2014-10-24 11:03:15
【问题描述】:

我在我的问题中的意思是,例如,当我向左移动鼠标时,如何让您的播放器自动旋转,并且我的整个角色身体将旋转并将其旋转限制为 2D 视图。

如果你们知道的话,类似于游戏“Rochard”。但是我很难弄清楚。

这是我的代码:

#pragma strict

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

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

【问题讨论】:

    标签: unity3d rotation unityscript


    【解决方案1】:

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

     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);
         }
     }
    

    【讨论】:

      【解决方案2】:

      首先,我真的很抱歉用 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);
      }
      

      【讨论】:

        【解决方案3】:

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

        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);
        
                 }
             }
        

        【讨论】:

          【解决方案4】:

          您可以从 unity 本身导入标准播放器控件包,然后根据自己的喜好编辑第一人称控制器。当我想要在我的游戏中实现你想要的控制时,我倾向于这样做。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-24
            • 2018-06-09
            • 2012-06-18
            • 1970-01-01
            相关资源
            最近更新 更多