반응형

배경


 

이제 유니티를 임베디드 완료했으니 유니티 프로그램을 개발할 차례다. 유니티 프로그램은 간단하게 두 개의 씬으로 구성했다.

 

  1. 운동선택씬
  2. 실시간 운동씬


운동선택씬

운동선택에서 스쿼트, 벤치프레스, 숄더프레스 등 운동을 선택하고 횟수 및 중량을 입력하면 실시간 운동씬으로 넘어간다.

 

 

실시간 운동씬

실시간 운동씬에서 운동 초기자세에 대한 설명을 진행하고 사용자의 운동을 트래킹한다.

 

 

 

선택한 운동을 다른 씬으로 가져갈 수 있어야 하기에 Singletone Desing 기법을 통해 DataManager 를 생성했다.

DoNotDestroyOnLoad 특성을 이용해 씬이 바뀌어도 파괴되지 않아 데이터를 보관할 수 있다.

반응형
반응형

배경


이제 스마트워치의 가속도 데이터를 가져왔고.. 3d 모델에 데이터를 전달해야한다. 3d 모델은 유니티로 만들어져 있어 유니티에 데이터를 전달하면 된다.

 

그렇기 때문에 안드로이드에 유니티를 임베딩 해야한다. 구글링을 해본 결과 잘 정리된 블로그를 발견해 그대로 따라해 보았다.

 

유니티 임베딩


[Android][Unity] 안드로이드와 유니티를 연동시켜보자(feat.Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0)

 

[Android][Unity] 안드로이드와 유니티를 연동시켜보자(feat.Caused by: android.content.res.Resources$NotFoundExcept

안드로이드 버튼을 눌렀을때 유니티로 접속이 될 수 있게 연동해보자!! https://www.youtube.com/watch?v=sf54tOAkmzU&t=301s 해당 영상을 참고해서 작성하였습니다. 🎈유니티 - Build Settings - 안드로이드 추가

minf.tistory.com

 

여기 그대로 따라하면 된다.

 

이 때 내가 임베딩을 하면서 유니티가 안떠 심히 고생을 했던 기억이 있다. 프로젝트가 다 끝나고 나서 정리하는지라 기억이 1도 안난다.

 

여튼 mainActivity 위에 unityHandlerAcitivity 를 불러오는 코드로 유니티를 띄울 수 있게 되었다.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        startActivity(Intent(this, UnityHandlerActivity::class.java))
    }
}

 

이제 유니티를 수정하고 안드로이드에 띄울때마다 기나긴 빌드의 시간을 견뎌야 함을 깨달을 차례..

반응형
반응형

Input 클래스 : 키보드 입력

 

Input.anyKeyDown // 아무입력을 최초로 받을 때 true
Input.anyKey // 아무입력을 받으면 true
Input.GetKeyDown // 키를 눌렀을때
Input.GetKey // 키를 누르고 있을때
Input.GetKeyUp // 키를 땠을 때
Input.GetMouseButtonUp(0) // 마우스 버튼 누름
Input.GetMouseButton(1) // 마우스 버튼 꾹 누름
Input.GetMouseButtonDown() // 마우스 버튼 땜
Input.GetButton("Jump") // input manager 상의 버튼을 사용가능
Input.GetAxis() // 수평, 수직 버튼 입력을 받으면 float, 꾹 누르면 가중치
Input.GetAxisRaw() // 1, -1 만 표시 좌, 우를 알 수 있음
// 0 : 왼쪽, 1 : 오른쪽

//Program Settings => Input manager 에서 버튼 세팅 가능

transform : 오브젝트는 변수 transform 을 항상 가지고 있음

transform.Translate(Vector 3) // 벡터 값을 현재 위치에 더하는 함수 

Vector 3 = new Vector 3(0,0,0) // 벡터 선언

Vector3 : 3차원 벡터 

Vector3.MoveTowards(현재위치, 목표위치, 속도 ) // 등속이동
Vector3.SmoothDamp(현재위치, 목표위치, ref, 속도) //부드러운 감속이동 속도에 반비례하여 이동
Vector3.Lerp() //SmoothDamp 보다 감속시간이 김 속도에 비례하여 이동
Vectro3.Slerp() //구면 선형보간, 호를 그리며 이동

Time.deltaTime

Translate : 벡터에 곱하기
translate.Translate(Vec * Time.deltaTime);

Vector : 시간 매개변수에 곱하기
Vector3.Lerp(Vec1, Vec2, T * Time.deltaTime);

//이전 프레임의 완료까지 걸린 시간 
// 프레임이 적으면 크고, 프레임이 많으면 적음

Rigidbody : 중력

  • Is Kinematic : 외부 물리 효과를 무시 (움직이는 함정)
  • FixedUpdate 에 작성해야한다

Collider : 물리 효과를 받기 위한 컴포넌트

material : 오브젝트 디자인

Physics Material : 탄성과 마찰을 다루는 물리적 재질

  • Collider 내부안의 인자
  • Bounciness : 탄성력
  • Bounciness Combine : 다음 탄성을 계산하는 방식
  • Friction : 마찰력
    • Dynamic : 동적 마찰력
    • Static : 정지 마찰력
GetComponent<T>() //T 타입의 컴포넌트르 가져옴

Rigidbody rigid = new Rigidbody();
Rigid.velocity // 속도를 바꿈
Rigid.AddForce //vec 방향과 크기로 힘을 줌 , 힘이 계속 더해짐
Rigid.AddTorque(Vec) // vec 방향을 축으로 회전력생김

ForceMode : 힘을 주는 방식
ForceMode.Impulse // 무게에 따라 달라짐

물리적 충돌(Collision), 콜라이더(Collider) 충돌

//실제 물리적 충돌
OnCollisionEnter(collision) // 물리적 충돌이 시작할 때 호출
OnCollisionExit(collision) //물리적 충돌이 끝났을 때 호출
OnCollisionStay(collision) // 충돌이 쭉 이어갈 때

//콜라이더 충돌
OnTriggerEnter(collider),Exit,Stay//물리적 충돌 x
반응형

'Unity > BE1' 카테고리의 다른 글

B1 : Life Cycle  (0) 2021.07.12
반응형

 

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

public class LifeCycle : MonoBehaviour
{
    // Start is called before the first frame update
    void Awake()// 게임 오브젝트 생성시, 최초실행
    {
        Debug.Log("Player Data has been ready.");
    }

    void Start()//업데이트 시작전 최초 실행
    {
        Debug.Log("사냥 장비를 챙겼습니다.");
    }

    //////////////초기화 영역//////////////////
    void OnEnable()
    {
        Debug.Log("플레이어 로그인");
    }

    /////////////활성화 영역///////////////
    void FixedUpdate()//물리 연산 업데이트 , 물리연산 확인 전 실행, cpu 많이 사용
    {
        Debug.Log("Move");
    }

    
    /////////////물리 영역////////////////////
    ///
    void Update()// 게임 로직 변환, 주기적, 환경에 따라 실행주기가 떨어진다, 물리연산보다 빠름
    {
        Debug.Log("사냥");
    }

    void LateUpdate() // 모든 업데이트 후 마지막 업데이트, 
    {
        Debug.Log("EXP");
    }


    ////////////게임로직////////////////////
    ///
    void OnDisable()
    {
        Debug.Log("플레이어 로그아웃");
    }

    
    /// ////////비활성화영역//////////////
    
    void OnDestroy() //게임오브젝트를 삭제할 때, 
    {
        Debug.Log("Player has been eliminated");
    }

    //////////////해체///////////////
    ///
}
반응형

'Unity > BE1' 카테고리의 다른 글

B2 : Input, Vector3, Other Components  (0) 2021.07.13

+ Recent posts