└▶연습
밤송이2: 스크린 좌표 -> 월드 좌표
101won
2024. 9. 17. 15:33
스크린 좌표는 벡터3로 받지만 실은 z가 없다. 그래서 카메라 좌표를 z값으로 넣었더니 턱턱 붙네.
좌표가 너무 안맞아서 처음으로 챗지피티한테 물어봤더니 깔끔하게 코드를 바꿔줬다.
글 쓰고 검증하는 것처럼 글쓴 이의 의도를 파악해서 요약해줘. 이런 게 가능하군.
근데 말이 넘 많다. 물어본 것만 대답하라고.
- bam
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class bam : MonoBehaviour
{
Rigidbody rb;
float moveSpeed = 600f;
public ParticleSystem particle;
void Start()
{
this.rb = GetComponent<Rigidbody>();
rb.useGravity = true; // 인풋하면 중력도 받게되어 포물선을 그리며 날아감
rb.AddForce(new Vector3(0, 0, moveSpeed));
}
private void OnCollisionEnter(Collision collision)
{
rb.isKinematic = true; // 부딪히면 키네마틱 투르로 멈춤
particle.Play();
}
}
- bamGenerator
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class bamGenerator : MonoBehaviour
{
public GameObject bamPrefab;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
GameObject bamGo = Object.Instantiate(bamPrefab);
Vector3 mousePos = Input.mousePosition; // 스크린 포지션
mousePos.z = -Camera.main.transform.position.z; // * 스크린 좌표엔 z가 없음, 카메라 포지션으로 Z값 설정함
Vector3 worldPos = Camera.main.ScreenToWorldPoint(mousePos); // 스크린 좌표 -> 월드 좌표로 변경
bamGo.transform.position = new Vector3(worldPos.x, worldPos.y, 0); // Z값을 고정
}
}
}