AnimateHandOnInput using UnityEngine; using UnityEngine.InputSystem; public class AnimateHandOnInput : MonoBehaviour { public InputActionProperty pinchAnimationAction; public InputActionProperty gripAnimationAction; public Animator handAnimator; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { float triggerValue = pinchAnimation..
using EzySlice; void FixedUpdate() { RaycastHit hit; var position = StartSlicingPoint.position; Vector3 dir = EndSlicingPoint.position - position; bool hasHit = Physics.Raycast(position, dir, out hit, dir.magnitude, Sliciable); if (hasHit && VelocityEstimator.GetVelocityEstimate().magnitude > NeedVelocityPower) { if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Bomb")) { // Play game..
using UnityEngine; using System.Collections; //------------------------------------------------------------------------- public class VelocityEstimator : MonoBehaviour { [Tooltip( "How many frames to average over for computing velocity" )] public int velocityAverageFrames = 5; [Tooltip( "How many frames to average over for computing angular velocity" )] public int angularVelocityAverageFrames = ..
public NetworkVariable Ready = new NetworkVariable(); 위와 같이 NetworkVariable을 클라이언트에서 바꾸고 싶다면 ReadyToServerRpc(); 함수를 하나 만들어서 [ServerRpc(RequireOwnership = true)] void ReadyToServerRpc() { Ready.Value = true; } 위와 같이 RequireOwnership을 true로 하면 됩니다!
본 내용은 정확하지 않을 수 있으며 문제가 생길시 수정하도록 하겠습니다. 스터디를 복습하기 위해 적어둔 글임을 강조합니다. LobbyManager 로비를 만드는 중추 역할을 합니다. CreateInitialPlayerData Dictionary CreateInitialPlayerData(LocalPlayer user) { Dictionary data = new Dictionary(); var displayNameObject = new PlayerDataObject(PlayerDataObject.VisibilityOptions.Member, user.DisplayName.Value); data.Add("DisplayName", displayNameObject); return data; } Player의 V..
Network Object Destroy 방법(1) / Destroy 그냥 Destroy하면 안된다 [ClientRpc] 속성을 이용해야함 Network Object Destroy 방법(2) / Despawn NetworkObject Component가 있는 경우 가능하며 Spawn()한 오브젝트 상대로 가능 그냥 Instantiate로 소환한 애를 Despawn하려고 하면 위와 같은 에러 발생 Network Object Spawn 하는방법(1) / Spawn var go = Instantiate(ParticleEffect, transform.position, Quaternion.identity); go.GetComponent().Spawn(); NetworkManager에 NetworkPrefabs에 ..
NetworkObject Visibility이란?Object (NetworkObject) visibility는 Netcode에서 사용하는 용어로써, 하나 이상의 클라이언트들에게 보여지고 있는지 사용됩니다 Visibility사용하기Visibility을 사용하는 한 가지 방법은 NetworkObject.CheckObjectVisibility callback을 등록하는 것입니다. 아래의 예시를 보면 콜백이 NetworkObject가 클라이언트에게 보이는지를 결정하기 위해 사용되는 파라미터로서 클라이언트 식별값(ClientID)을 포함하고 있는 것을 볼 수 있습니다. 보여지고 있는지 확인하는 방법으로는 NetworkObject.CheckObjectVisibility에 Callback을 등록하는 것입니다!Netw..
우리 학교 대선배님들 존경스럽다!!! 2명에서 시작하셨다는데 정말 훌륭하시다 ㅠㅠㅠ 내가 질문한 것들도 있고 다른 사람들이 질문한것도 받아 적었다~ 1. Q. 클라이언트 개발 채용에 대해 A. 코딩만 잘해서 절대 할 수 없다, 산업에 대한 이해도가 굉장히 높아야 한다 문화기술쪽으로 이해도 높은 사람이 게임을 잘 만든다 대중문화 잘 아는 사람이 좋은 게임도 만들 줄 안다 2. Q. 도전해봐야 할 학교 활동 추천? A. 다른 학과 수업을 들어보는거 추천한다, 심리학과 강추한다 게임을 하는 이유에 대해 고민해봐야 하고 유저들이 게임에 왜 돈을 쓰는지, 왜 게임을 하는지 생각해보아야 한다(대다수들은 재미 때문이라고 90%라고 대답한다고 한다) => 면접질문 A. 재미란 무엇일까요? 자신의 정의가 중요하다, 게임..
ML-Agents를 사용하는 방법에는 2가지가 있다 첫 번째, ML-Agents에서 제공하는 mlagents-learn 기능을 이용해 학습을 수행, 이 경우 강화학습 알고리즘을 직접 구현하지 않아도 되고 간단한 명령어만으로 학습을 수행할 수 있다, 단점으로는 학습과 관련된 파라미터만 변경이 가능하고, 알고리즘에 대한 변경은 제한적 두 번째, ML-Agents의 Python-API를 사용하여 직접 구성한 파이썬 코드를 통해 에이전트를 학습하는 것, 알고리즘에 대한 변경이 자유롭지만 직접 구현해야 한다는 점에서 난이도가 높다 # ML-Agents에서 제공하는 강화학습 알고리즘 Proximity Policy Optimization (PPO) Soft Actor Critic (SAC) Curiostiy base..
# Behavior Parameters Behavior Name : Behavior Parameters의 이름을 결정함, 여러개의 파라미터를 사용하는 경우 이들을 구분하기 위한 것 Vector Observation : Space Size : 현재 환경에서 사용할 벡터 관측의 크기를 설정 Stacked Vectors : 벡터 관측의 누적 횟수를 결정, 시간에 따른 누적으로 해당 누적 횟수만큼 시간 스텝에 대해 벡터 관측을 누적 - Why ? : 속도나 방향과 같이 시간에 대한 정보가 필요한 경우에는 상태를 누적해야함 Actions : 에이전트의 행동과 관련된 설정 3DBall 게임 같은경우 X,Z축을 회전시키면서 박스를 제어해야 하므로 2개의 축에대한 제어를 위해 Continuous Actions을 2로 ..
https://github.com/Unity-Technologies/ml-agents/releases Releases · Unity-Technologies/ml-agents The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinforcement ... github.com 여기 링크에 들어가서 릴리즈 17을 찾고 다운받고 압축해제하셈 유니티에서도 다운받는 방법을 간단하게 소개하면 다운받은 경로로 들어가서 2개의 폴더를 확인 후 j..
ML - Agents는 유니티를 이용한 인공지능 에이전트의 학습을 지원하는 도구로, 기본적으로는 강화학습 에이전트를 학습하기 위한 다양한 기능을 제공한다고함! 강화학습의 특성상 학습 및 검증을 위해 주로 실제 환경이 아닌 시뮬레이션 황경을 이용함! ML - Agents의 역할 최근에는 딥러닝의 발전으로 인해 딥러닝과 강화학습을 결합한 심층강화학습 알고리즘이 주로 사용된다고함 심층강화학습 알고리즘을 구현하려면 우선 인공신경망을 구현해야 하는데, 인공신경망을 이용하는 알고리즘은 주로 파이썬 언어를 이용한다고함 유니티는 주로 C#코드를 사용하기 때문에 ... 강화학습 알고리즘과 환경이 서로 다른 프로그래밍 언어로 구현된 독립적인 프로그램이다... 따.라.서!!!!!! 프로그램들 간에 행동, 상태, 보상 등의 ..
강화학습은 순차적으로 행동들을 선택하면서 보상을 최대화하는 의사 결정 전략인 순차적 결정 문제이다 이런 순차적 결정 문제를 수학적으로 정의한 것이 마르코프 결정 프로세스 ( MDP ) 이다 MDP는 상태(state), 행동(action), 보상 함수(reward functions), 감가율(discount factor), 상태 변환 확률(state transition probabilty)로 구성돼 있다 State Agent는 상태를 기반으로 의사 결정을 함, 상태는 에이전트가 의사 결정하는 데 사용하기 위해 관측, 행동 등을 가공한 정보!! 일반적으로 현재 스텝의 상태는 s라고 표기함 Action Agent가 의사 결정을 통해 취할 수 있는 행동을 의미, 일반적으로 현재 상태에서 취하는 행동을 a라고 표..
파이토치와 유니티 ML-Agents로 배우는 강화학습 이라는 책을 읽고 쓰는 내용임 강화학습을 이해하기 앞서 기계학습이 무엇인지 짚고 가보자 기계학습은 1959년 아서 사무엘이라는 분이 기계가 일일이 코드로 명시하지 않은 동작을 데이터로부터 학습하여 실행할 수 있도록 하는 알고리즘을 개발하는 연구 분야" 라고 정의했다 기계학습 알고리즘에는 결정 트리, 랜덤 포레스트, 서포트 벡터 머신,인공 신경망 등이 있다 기계학습은 크게 지도 학습, 비지도 학습, 강화 학습 3가지 유형으로 나눌 수 있다 3가지 유형에 대해 짤막하게 설명해보자면 지도 학습 : 머신러닝 알고리즘이 데이터 세트의 특징을 통해 예측한 값과 실제 정답의 오차를 줄여나가도록 반복적으로 학습, 주로 회귀나 분류와 같은 문제를 해결하는데 사용 됨,..