Unity 연구 노트 --PanelUI가 타코미터를 만듭니다

먼저 렌더링을
여기에 사진 설명 삽입
업로드 해 보겠습니다. (사진은 Baidu가 아무렇게나 검색했는데 단순히 흐릿 해졌습니다)

  1. 평면 평면을 장면에 배치하면 자연스럽게 배치하거나 색상을 변경하거나 바닥으로 텍스처를 추가 할 수 있습니다.
  2. 새 큐브를 만들고 마음대로 색상을 변경할 수도 있습니다. 더 눈길을 끌기 위해 멋진 무지개 막대를보고 게시했습니다. Rigibody 구성 요소를 추가하는 것을 잊지 마십시오.
  3. 카메라 각도와 위치를 조정합니다. 물체 뒤에있는 것이 가장 좋습니다. 다음 코드를 추가합니다.
    카메라 보간 따르기 이전 게시물을 참조 할 수 있습니다. "카메라 보간 따르기"
  4. 창의 2D 디스플레이를 조정하고 Hierarchy에서 새 UI → Canvas 구성 요소를 만들고 적절한 위치로 조정합니다.
    여기에 사진 설명 삽입
    Canvas에서 새 패널 구성 요소를 마우스 오른쪽 단추로 클릭 한 다음 Source Image에서 다운로드 한 타코미터 이미지를 선택합니다. 패널 속성의 이미지 구성 요소, 필요에 따라 위치, 크기 등을 조정합니다.
    (여기의 그림은 JPG 형식으로 변경하는 것이 가장 좋습니다. 즉, 프로젝트에 드롭 다운 화살표가 표시됩니다. 패널에서 사용할 수 있음)
    여기에 사진 설명 삽입

여기에 사진 설명 삽입
5. 패널 아래에 빈 GameObject 구성 요소를 만들고 아래에 Image 구성 요소를 만들고 색상과 모양을 조정하여 대략적으로 포인터를 만들고 부모-자식 관계의 위치를 ​​조정하여 GameObject가 중앙을 중심으로 회전 할 수 있도록합니다. 전화;
여기에 사진 설명 삽입
6. 추가 게임 오브젝트 코드 : ShowSpeed는 () 우리는 모션 코드에서 호출 할 수있는 공공 그렇게해야합니다;

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rotate : MonoBehaviour
{
    
    
    static float minAngle = 0.0f;
    static float maxAngle = -180f;   //0-180代表表盘旋转的角度
   static Rotate thisSpeed0;
    // Start is called before the first frame update
    void Start()
    {
    
    
        thisSpeed0 = this;
    }
    // Update is called once per frame
    public static void ShowSpeed(float speed, float min, float max)
    {
    
    
        //将速度与指针转动角度对应起来
        float ang = Mathf.Lerp(minAngle, maxAngle, Mathf.InverseLerp(min, max, speed));
        //添加旋转   可以在ang后乘以个常数用来调节转动效果
        thisSpeed0.transform.eulerAngles = new Vector3(0, 0, ang*10f);
    }
}

  1. Cube에 모션 코드를 추가합니다 (맨 위에있는 ShowSpeed ​​() 함수를 호출해야 함) :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class move : MonoBehaviour
{
    
    
   public float speed=0;
    float h = 0;
    Rigidbody rg;
    
    // Start is called before the first frame update
    void Start()
    {
    
    
        rg = this.GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
    
    
        float v = Input.GetAxis("Vertical")*0.3f;//垂直轴
        h = Input.GetAxis("Horizontal");//水平轴
        for (int i = 0 ; i < 10; i++)
        {
    
    
            speed *= v;
            movetion();
            speed++;
        }
        movetion();
        Rotate.ShowSpeed(rg.velocity.magnitude, 0, 100);
    }
   private void movetion ()
    {
    
    
       rg.AddForce(h, 0, 2* speed);
    }
}

제어 코드에서 "수직 및 수평"이 사용되기 때문에 위, 아래, 왼쪽, 오른쪽 또는 W, S, A, D를 사용하여 제어 할 수 있습니다.

참고 :
큐브의 리지 바디 구성 요소의 경우 Y 축의 수직 이동을 제한하는 것이 가장 좋습니다. 그렇지 않으면 사용자가 제어 할 수 없습니다.

추천

출처blog.csdn.net/qq_42434073/article/details/111941068