활시위 당기는 법
VR/Oculus Integration 2023. 12. 22. 13:43 https://youtube.com/playlist?list=PLTFRwWXfOIYB9hru6EjeVS0E-4jNiOuQQ&si=zoJ3NoYX6YrGnpg1
잡기 기본형을 만들어 줍니다
![](https://blog.kakaocdn.net/dn/z0Hdx/btsCsquNKCD/1IKRaXtsfaskyNmOJWVC9K/img.png)
빈 오브젝트 Bow를 만들어 주고 자식으로 빈오브젝트 Body를 만들어 줍니다.
![](https://blog.kakaocdn.net/dn/b8yKTP/btsCtnkeu8A/IFjfKYoWP7sWRSbDUcIgL1/img.png)
Bow의 위치와 크기를 설정 합니다.
![](https://blog.kakaocdn.net/dn/caOZdi/btsCswIwol8/IuxXjnWi6kdjhUnvwVSxY1/img.png)
Body를 선택하고 Rigidbody, Grabbable, One Grab Free Transformer 컴포넌트를 추가 합니다.
![](https://blog.kakaocdn.net/dn/cuurnI/btsCszSJOMl/tAJaWMFQEEvHQ63iSPUsBk/img.png)
Body를 선택하고 빈 오브젝트 Visuals, BowString, Handle를 생성 하고
HandGrabInteractable 프리팹을 가져옵니다.
![](https://blog.kakaocdn.net/dn/cyJEvY/btsCwdVzoHk/OyPXtvoFWVLgzGFzHiItHK/img.png)
Visuals를 선택하고 Mesh, Collider빈오브젝트를 생성 합니다.
![](https://blog.kakaocdn.net/dn/bxHEHC/btsCtciQzsq/nmWpELItHE9Vo1srgNwaNk/img.png)
Mesh오브젝트를 선택하고 Mesh Filter, Mesh Renderer를 부착 후 Mesh와 Material을 넣어 줍니다.
![](https://blog.kakaocdn.net/dn/bpk97d/btsCsoKzdjN/vT3S7EQ77iWdk1eHZFycfk/img.png)
Collider 오브젝트를 선택하고 캡슐 콜라이더를 부착 합니다.
![](https://blog.kakaocdn.net/dn/sRwVp/btsCwbckgon/1D6NIL255fjRM7544qEO7K/img.png)
![](https://blog.kakaocdn.net/dn/kARUB/btsCsyfgRwZ/h28dfzE5D9f2QBYyS7aO41/img.png)
BowString 오브젝트를 선택하고 BowString 스크립트를 만들어 부착 합니다.
![](https://blog.kakaocdn.net/dn/WEQxx/btsCwN3oz25/LUS7NJh2zC0Tb2QRU3eHT0/img.png)
![](https://blog.kakaocdn.net/dn/m59G2/btsCu1A5ndT/dagvU1sIGOdLFdEpqmWxPk/img.png)
BowString스크립트는 다음과 같습니다.
using System;
using System.Collections.Generic;
using UnityEngine;
using Oculus.Interaction;
public class BowString : MonoBehaviour
{
[SerializeField] private LineRenderer lineRenderer;
[SerializeField] private Transform point1, point2;
[SerializeField] private Transform midPoint;
[SerializeField] private ConfigurableJoint joint;
public InteractableUnityEventWrapper eventWrapper;
private List<Vector3> linePoints = new List<Vector3>();
private void Start()
{
this.eventWrapper.WhenSelect.AddListener(() =>
{
Debug.Log("<color=yellow>Selected</color> Handle");
JointDrive drive = joint.xDrive;
drive.positionSpring = 0;
drive.positionDamper = 0;
joint.xDrive = drive; // xDrive를 수정한 후 다시 할당합니다.
});
this.eventWrapper.WhenUnselect.AddListener(() =>
{
Debug.Log("<color=yellow>UnSelected</color> Handle");
JointDrive drive = joint.xDrive;
drive.positionSpring = 2000;
drive.positionDamper = 200;
joint.xDrive = drive; // xDrive를 수정한 후 다시 할당합니다.
});
}
private void FixedUpdate()
{
linePoints.Clear();
linePoints.Add(point1.localPosition);
var midLocalPosition = transform.InverseTransformPoint(midPoint.position);
linePoints.Add(midLocalPosition);
linePoints.Add(point2.localPosition);
lineRenderer.positionCount = linePoints.Count;
lineRenderer.SetPositions(linePoints.ToArray());
}
}
BowString오브젝트를 선택 하고
Visuals, Point1, Point2 빈오브젝트를 생성 합니다.
![](https://blog.kakaocdn.net/dn/xziR7/btsCtGKI3mz/PYpaffbq4mR6RuTLrk6gkK/img.png)
Visuals 오브젝트를 선택하고 LineRenderer 빈 오브젝트를 생성 합니다.
![](https://blog.kakaocdn.net/dn/bQ1wms/btsCraF5d50/jEZ8u7Ydg6YR9IWktKtH4k/img.png)
LineRenderer를 선택하고 LineRenderer 컴포넌트를 부착 합니다.
![](https://blog.kakaocdn.net/dn/KdVib/btsCt7hb2kh/ocPHQ9b5GABJXs493AQXbK/img.png)
Point1오브젝트를 선택하고 위치를 잡아줍니다.
![](https://blog.kakaocdn.net/dn/bd0dYd/btsCsppcKDo/z3JPHPAJUZHON55HZM3BNk/img.png)
![](https://blog.kakaocdn.net/dn/EwR83/btsCwc3qU3W/TfnPb3WYP1Md6qCDWB2dGk/img.png)
Point2를 선택하고 위치를 잡아 줍니다.
![](https://blog.kakaocdn.net/dn/OVbyn/btsCwQeHtGo/76iboRsohkkiLgxPMs2kQK/img.png)
![](https://blog.kakaocdn.net/dn/Tcgls/btsCwM4vJJn/jYLuoU7yuj0sy4eAnBSnX1/img.png)
Handle오브젝트를 선택하고
![](https://blog.kakaocdn.net/dn/dn8bOZ/btsCw6n54Xy/Vezk1oHp7xJtx4Kb7FBmk0/img.png)
Rigidbody, Grabbable, ConfigurableJoint, OneGrabTranslateTransformer컴포넌트를 부착 합니다.
![](https://blog.kakaocdn.net/dn/K9d9u/btsCwbwEeEs/LnUXWVTdYXOARvhreureY0/img.png)
![](https://blog.kakaocdn.net/dn/bomkHN/btsCralO2vG/PWebKHvG29y0rErK67kCtK/img.png)
![](https://blog.kakaocdn.net/dn/bO6SLm/btsCwMpU2uk/rpZtiakGdZbfYD9zoK55R1/img.png)
Handle오브젝트 자식으로 Sphere를 생성 하고 HandGrabInteractable프리팹을 가져옵니다.
![](https://blog.kakaocdn.net/dn/bxsQwV/btsCq9tGnpv/mWv8v2LhDTi24xD8LOCA0k/img.png)
Sphere 오브젝트를 선택하고
![](https://blog.kakaocdn.net/dn/qhWL6/btsCw6hm8PM/aZJE5rFgfNu9NloqnPRFYk/img.png)
Mesh를 비활성화 합니다.
![](https://blog.kakaocdn.net/dn/wg3dg/btsCu0Wskss/YPHpmirEtfUt97vZxXHEa0/img.png)
HandGrabInteractable오브젝트를 선택하고
![](https://blog.kakaocdn.net/dn/c1Nu0S/btsCuY5n2xM/BiHufMiTKXXGdZcLOjKbJk/img.png)
Interactable Unity Event Wrapper컴포넌트를 부착 합니다.
![](https://blog.kakaocdn.net/dn/8vXyr/btsCs9sVZqq/IHZ6kn8RA053rEaoyT76K1/img.png)
'VR > Oculus Integration' 카테고리의 다른 글
Oculus Integration SDK Hand & Materials (0) | 2024.01.03 |
---|---|
탁구채로 탁구공 튕기기 (0) | 2023.12.22 |
OneGrabPhysicsJointTransformer (0) | 2023.12.20 |
Grabbable (Two Grab Transformers) (0) | 2023.12.19 |
Grabbable (0) | 2023.12.18 |