저는 현재 3D 세계에서 플레이어 (구)를 움직이기 위해 마우스 입력을 사용하고 있습니다. 나는 레이캐스팅으로 이것을하고 hit.point
좌표를 사용하고 있습니다. 이것은 게임을 작동시키는 방식이지만, 3D 게임이기 때문에 마우스 좌표를 사용하여 플레이어를 움직일 때마다 제대로 정렬되지 않습니다. 이것은 플레이어가 3d이고 마우스 좌표가 2d이기 때문입니다. 나는 지상 1.3f에서 플레이어가있는 경우Unity : Vector3.MoveTowards()를 사용하여 마우스를 3D 플레이어 중앙에 배치하려면 어떻게합니까?
, 어떻게 내가 그렇게 마우스가 플레이어의 중앙에 Vector3.MoveTowards
조작 할 수 있습니다 :
public float speed;
public GameObject player;
private Ray ray;
private RaycastHit hit;
private Vector3 mousePos;
void Start()
{
}
void FixedUpdate()
{
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit))
{
mousePos = new Vector3(hit.point.x, /*Insert Code*/, hit.point.z);
if(mousePos != player.transform.position)
{
player.transform.position = Vector3.MoveTowards(player.transform.position, mousePos, speed * Time.deltaTime);
}
}
}
내 질문은 이것이다 : 여기
내 코드입니다 플레이어의 높이에 영향을주지 않으면 서 (1.3f)?player.transform.position.y
을 사용해 보았지만 플레이어 바로 아래에 마우스를 놓았습니다 (x 및 z 값은 작동했지만 y 값은 효과가 없었습니다).
나는 또한 hit.point.y를 시도했지만 플레이어 높이 (1.3f)보다 큰 값을주었습니다.
Unity 질문은 일반적으로 Unity/Mono Forum에서 더 잘 묻습니다. 이 포럼은 여전히 MSDN 중 하나이지만, 아직까지는 그렇지 않습니다. – Christopher
@Christopher 나는 단결에 관해서 보통 여기에 간다. 나는 거기에서도 시도 할 것이다. –
'hit.point.y'는 아마도 레이 캐스트가 플레이어 오브젝트를 치기 때문에 원하는 값을 반환하지 않을 것입니다. layayer를 사용하여 마우스 레이크 캐스트에서 플레이어 개체를 제외해야합니다. – Draco18s