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

时间:2014-10-24 11:03:16

标签: 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);
}

4 个答案:

答案 0 :(得分:1)

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

add_action( 'template_redirect', 'remove_after_single_product_section_on_home', 1 );
function remove_after_single_product_section_on_home(){

    // On home page only
    if( is_front_page() ) {
        remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 ); // Product tabs
        remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 ); // Upsells
        remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 ); // Related products
    }
}

答案 1 :(得分:0)

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

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

         }
     }

答案 2 :(得分:0)

您可以从Unity本身导入标准播放器控件包,并根据您的喜好编辑第一个人控制器。当我想在我的游戏中使用可以做你想要的控件时,我倾向于这样做。

答案 3 :(得分:0)

首先,我真的很抱歉用C#编写它。但我希望它能对您有所帮助。该脚本已附加到玩家gameobject。

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