반응형
< juggling 만들기 >
3번째 프로젝트의 오류 보완과 공의 움직임 보완하여 다시 짠 코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Leap;
using Leap.Unity;
public class j2 : MonoBehaviour
{
Frame frame;
Controller controller;
public GameObject ball1;
public GameObject R, L;
Rigidbody rigid;
Vector v, vr;
bool check = true;
bool a = false;
void Start()
{
controller = new Controller();
rigid = ball1.GetComponent<Rigidbody>();
ball1.transform.position = new Vector3(-0.009f, 0.117f, 0.241f);
}
void Update()
{
if (Input.GetKey(KeyCode.Space))
{
rigid.useGravity = true;
ball1.GetComponent<ConstantForce>().enabled = true;
}
Hand hand, otherhand;
Vector3 handposition;
frame = controller.Frame();
if (frame != null)
{
if(frame.Hands.Count == 1)
{
hand = frame.Hands[0];
if(a == false)
{
if (hand.IsRight == false)
{
handposition = new Vector3(L.transform.position.x, L.transform.position.y, L.transform.position.z);
if (Vector3.Distance(handposition, ball1.transform.position) < 0.12)
{
rigid.useGravity = true;
ball1.GetComponent<ConstantForce>().enabled = true;
ball1.transform.position = new Vector3(L.transform.position.x, L.transform.position.y + 0.07f, L.transform.position.z);
check = false;
}
}
else
{
handposition = new Vector3(R.transform.position.x, R.transform.position.y, R.transform.position.z);
if (Vector3.Distance(handposition, ball1.transform.position) < 0.12)
{
rigid.useGravity = true;
ball1.GetComponent<ConstantForce>().enabled = true;
ball1.transform.position = new Vector3(R.transform.position.x, R.transform.position.y+ 0.07f, R.transform.position.z);
check = false;
}
}
}
v = hand.PalmVelocity;
if (Mathf.Abs(v.y) > 500 && check == false)
{
//Debug.Log("던졌음");
a = true;
vr.x = v.x;
vr.y = v.y;
vr.z = v.z;
ball1.GetComponent<Rigidbody>().AddForce(new Vector3(vr.x * 0.0001f, vr.y * 0.01f, vr.z), ForceMode.Force);
}
}
else
{
int num = 0;
hand = frame.Hands[0];
otherhand = frame.Hands[1];
if (a == false)
{
handposition = new Vector3(L.transform.position.x, L.transform.position.y, L.transform.position.z);
if (Vector3.Distance(handposition, ball1.transform.position) < 0.12)
{
rigid.useGravity = true;
ball1.GetComponent<ConstantForce>().enabled = true;
ball1.transform.position = new Vector3(L.transform.position.x, L.transform.position.y + 0.07f, L.transform.position.z);
check = false;
num = 2;
}
handposition = new Vector3(R.transform.position.x, R.transform.position.y, R.transform.position.z);
if (Vector3.Distance(handposition, ball1.transform.position) < 0.12)
{
rigid.useGravity = true;
ball1.GetComponent<ConstantForce>().enabled = true;
ball1.transform.position = new Vector3(R.transform.position.x, R.transform.position.y + 0.07f, R.transform.position.z);
check = false;
num = 1;
}
}
if (hand.IsLeft == true)
{
if(num == 2)
{
v = hand.PalmVelocity;
}
else
{
v = otherhand.PalmVelocity;
}
}
else
{
if (num == 1)
{
v = hand.PalmVelocity;
}
else
{
v = otherhand.PalmVelocity;
}
}
if (Mathf.Abs(v.y) > 500 && check == false)
{
Debug.Log("던졌음");
a = true;
vr.x = v.x;
vr.y = v.y;
vr.z = v.z;
Debug.Log(Mathf.Abs(v.y));
ball1.GetComponent<Rigidbody>().AddForce(new Vector3(vr.x * 0.00001f, vr.y * 0.001f, vr.z), ForceMode.Force);
}
}
}
}
public void colliderCube()
{
rigid.velocity = new Vector3(0, 0, 0);
rigid.useGravity = false;
ball1.GetComponent<ConstantForce>().enabled = false;
ball1.transform.position = new Vector3(-0.009f, 0.117f, 0.241f);
a = false;
check = true;
}
}
공의 움직임을 스무스하기 위해 중력값을 조정
[leap motion project] test 1 : 공 한 개와 한 손으로 해 본 결과( 위아래 움직임(Y축)만 공에 적용 )
결과 동영상 : https://youtu.be/8LjSGBfECL4
[leap motion project] test 2 : 공 한 개와 두 손으로 해 본 결과( 위아래좌우 움직임(X, Y축)만 공에 적용
결과 동영상 : https://youtu.be/UhkWxrwfuMA
보다싶이 두 손을 가지고 주고 받는 것이 잘 되지 않음. 이를 해결하기 위해 정글링 동영상을 살펴본 결과 중점적으로 본 특징 2가지가 있음.
1. 공이 포물선을 그린다.
2. 공이 손에 쥐어줬다가 다시 빠져나간다.
그 다음 프로젝트에서는 포물선을 그리는 것부터 다시 구현할 계획.
반응형
'Project' 카테고리의 다른 글
[Leap motion] Leap Service 이(가) 작동하지 않습니다 - 수동 실행하 (0) | 2020.04.26 |
---|---|
[unity + leap motion project] 립모션 제스처 만들기 프로젝트 5번째 정리 (2) | 2020.04.20 |
[unity + leap motion project] 립모션 제스처 만들기 프로젝트 3번째 정리 (0) | 2020.03.23 |
[unity + leap motion project] 립모션 제스처 만들기 프로젝트 2번째 정리 (9) | 2020.03.17 |
[unity + leap motion project] 립모션 제스처 만들기 프로젝트 1번째 정리 (1) | 2020.03.16 |
댓글