亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在編輯器中旋轉平滑但在設備中不旋轉

在編輯器中旋轉平滑但在設備中不旋轉

C#
三國紛爭 2022-12-24 12:29:15
我有一個 3D 對象,我想用鼠標/手指滑動來旋轉它,所以我制作了下面的腳本。對象的旋轉在編輯器上看起來很流暢,但是在真實設備(android)上玩游戲時,旋轉并沒有立即跟隨手指移動,跟隨手指需要幾毫秒,它不流暢并且控制變得困難并且令人沮喪!float sensitivity = 0.8f;Vector2 firstPressPos;Vector2 secondPressPos;void Update(){    if (Input.GetMouseButtonDown(0))    {        //save began touch 2d point        firstPressPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y);    }    if (Input.GetMouseButton(0))    {        //save ended touch 2d point        secondPressPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y);        if (firstPressPos != secondPressPos)        {            float RotX = Input.GetAxis("Mouse X") * sensitivity * Time.deltaTime;            float RotY = Input.GetAxis("Mouse Y") * sensitivity * Time.deltaTime;            transform.RotateAround(Vector3.up, RotX);            transform.RotateAround(Vector3.right, -RotY);        }    }}
查看完整描述

2 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

試試這個代碼


// Screen Touches

    Vector2?[] oldTouchPositions = {

        null,

        null

    };

    // Rotation Speed

    public float rotSpeed = 0.5f;


    public void Update()

    {

        if (Input.touchCount == 0)

        {

            oldTouchPositions[0] = null;

            oldTouchPositions[1] = null;

        }

        else if (Input.touchCount == 1)

        {

            if (oldTouchPositions[0] == null || oldTouchPositions[1] != null)

            {

                oldTouchPositions[0] = Input.GetTouch(0).position;

                oldTouchPositions[1] = null;

            }

            else

            {

                Vector2 newTouchPosition = Input.GetTouch(0).position;

                float distanceX = (oldTouchPositions[0] - newTouchPosition).Value.x;

                float distanceY = (oldTouchPositions[0] - newTouchPosition).Value.y;


                float rotX = distanceX * rotSpeed * Mathf.Deg2Rad;

                float rotY = distanceY * rotSpeed * Mathf.Deg2Rad;



                transform.Rotate(Vector3.up, rotX * 5, Space.Self);

                transform.Rotate(Vector3.left, rotY * 5, Space.Self);



                oldTouchPositions[0] = newTouchPosition;


            }

        }

        else

        {

            if (oldTouchPositions[1] == null)

            {

                oldTouchPositions[0] = Input.GetTouch(0).position;

                oldTouchPositions[1] = Input.GetTouch(1).position;

            }

            else

            {


            }

        }

    }


查看完整回答
反對 回復 2022-12-24
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

這是我幾年前發現的一個腳本,它使用鼠標或觸摸操作 X 軸旋轉。它似乎適用于觸摸,但不適用于鼠標。嘗試一下,讓我知道它是否表現更好。這個應該動態調整旋轉速度:


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class SpinDrag : MonoBehaviour {


    float f_lastX = 0.0f;

    float f_difX = 0.5f;

    float f_steps = 0.0f;

    int i_direction = 1;


    // Use this for initialization

    void Start()

    {


    }


    // Update is called once per frame

    void Update()

    {

        if (Input.GetMouseButtonDown(0))

        {

            f_difX = 0.0f;

        }

        else if (Input.GetMouseButton(0))

        {

            f_difX = Mathf.Abs(f_lastX - Input.GetAxis("Mouse X"));


            if (f_lastX < Input.GetAxis("Mouse X"))

            {

                i_direction = -1;

                transform.Rotate(Vector3.up, -f_difX);

            }


            if (f_lastX > Input.GetAxis("Mouse X"))

            {

                i_direction = 1;

                transform.Rotate(Vector3.up, f_difX);

            }


            f_lastX = -Input.GetAxis("Mouse X");

        }

        else

        {

            if (f_difX > 0.5f) f_difX -= 0.05f;

            if (f_difX < 0.5f) f_difX += 0.05f;


            transform.Rotate(Vector3.up, f_difX * i_direction);

        }

    }

}


查看完整回答
反對 回復 2022-12-24
  • 2 回答
  • 0 關注
  • 94 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號