일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- VR
- 유니티 GUI
- 포트폴리오
- meta xr
- 유니티
- 팀프로젝트
- HAPTIC
- 개발일지
- ChatGPT
- Photon Fusion
- 가상현실
- 멀티플레이
- 팀 프로젝트
- 드래곤 플라이트 모작
- OVR
- 유니티 Json 데이터 연동
- 오큘러스
- input system
- 모작
- CGV
- 개발
- 연습
- XR
- 길건너 친구들
- 드래곤 플라이트
- Oculus
- 오브젝트 풀링
- 앱 배포
- meta
- 유니티 UI
Archives
- Today
- Total
EasyCastleUNITY
유니티 밤송이 던지기 본문
파티클 시스템을 사용했음
BamsongiController
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BamsongiController : MonoBehaviour
{
private Rigidbody rBody;
[SerializeField]
private float forwardForce = 2000;
private ParticleSystem effect;
// Start is called before the first frame update
private void Awake()
{
this.rBody = GetComponent<Rigidbody>();
this.effect = GetComponent<ParticleSystem>();
}
void Start()
{
//this.Shoot();
}
// Update is called once per frame
public void Shoot(Vector3 force)
{
//앞으로 힘을 줘서 이동시킨다.
//앞 :(0,0,1) (World position) 항상 변하지 않음
//밤송이가 바라보는 앞쪽 (Local position) 변할 수 있음
this.rBody.AddForce(force); //포물선 그리기
}
private void OnCollisionEnter(Collision collision)
{
//충돌한 대상의 게임오브젝트 이름
if(collision.gameObject.tag == "Target")
{
Debug.Log("과녁에 충돌");
this.rBody.isKinematic = true;
this.effect.Play();
}
}
}
BamsongiGenerator
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BamsongiGenerator : MonoBehaviour
{
public GameObject bamsongiPrefab;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if(Input.GetMouseButtonDown(0))
{
//화면을 터치 하면 월드 공간에 Ray를 생성함
//픽셀 좌표계를 월드 좌표계로 반환하여 Ray생성
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//생성된 레이를 에디터에서 출력
Debug.DrawRay(ray.origin, ray.direction * 1000f, Color.red, 1f);
//ray.direction.normalized(단위 벡터로 변경)
//길이가 1인 벡터 : 방향
Vector3 force = ray.direction.normalized * 2000f; //방향 * 힘:2000f
this.CreateBamsongi(force);
}
}
private void CreateBamsongi(Vector3 force)
{
GameObject go = Instantiate(bamsongiPrefab);
BamsongiController controller = go.GetComponent<BamsongiController>();
//Debug.LogError(go.transform.position);
controller.Shoot(force);
}
}
결과
타겟을 클릭할 때는 제대로 기능하지만, 타겟에서 멀어질 수록 점점 정확도가 떨어지는 문제가 있다.
이 문제에 대해서 나중에 고찰을 해보기로 하자
'유니티 기초' 카테고리의 다른 글
유니티 Raycast hit 응용 (Warp && Translate) (0) | 2023.08.04 |
---|---|
유니티 애니메이션 & 직선 이동 및 대각선 이동 (0) | 2023.08.04 |
구름 오르기 (0) | 2023.08.02 |
고양이 화살 피하기 게임 (0) | 2023.08.02 |
2023/08/01 복습 (0) | 2023.08.01 |