우선 : 나쁜 영어로 죄송합니다. 네덜란드어입니다.플레이어 개체가 회전하는 동안 위치가 변경됩니다.
나는 위아래 키를 사용하여 앞뒤로 이동할 수있는 플레이어 개체를 만들고 오른쪽 및 왼쪽 키로 플레이어를 회전하려고합니다. 그러나 왼쪽 또는 오른쪽 키를 누르면 플레이어의 위치가 바뀌고 특정 지점을 중심으로 회전하는 것처럼 보입니다. 그러나 나는 돌아 서서 할 때처럼 내가 돌아가고 같은 장소에 있어야합니다.
동일한 '이동 스크립트'와 동일한 입력 관리자 설정을 사용하는 다른 작은 프로그램이 있습니다. 저기, 잘 작동하므로 왜 이번엔 작동하지 않습니다 모르겠어요.
이 내 움직임 스크립트이지만,이 스크립트는 다른 프로그램과 잘 작동 : (또한 잘 작동 경우 다른 프로그램과 같은)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveScript : MonoBehaviour
{
public float speed = 3f;
public float rotate = 50f;
private Rigidbody rb;
// Update is called once per frame
private void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
if (Input.GetButton("Up"))
transform.Translate(Vector3.forward * speed * Time.deltaTime);
if (Input.GetButton("Down"))
transform.Translate(-Vector3.forward * speed * Time.deltaTime);
if (Input.GetButton("Right"))
transform.Rotate(Vector3.up, rotate * Time.deltaTime);
if (Input.GetButton("Left"))
transform.Rotate(-Vector3.up, rotate * Time.deltaTime);
if (gameObject.GetComponent<Rigidbody>().velocity.y < 0.01)
{
if (Input.GetButtonDown("Jump"))
rb.AddForce(0, 225, 0);
}
}
}
InputManager 설정 :
누군가 내 프로그램의 다른 스크린 샷을 원할 경우 언제든지 물론. 스크립트 또는 입력 관리자에없는 경우 문제가 무엇인지 알 수 없습니다.
당신은 * 플레이어 오브젝트의 중심점을 기준으로 * 당신의 회전을 수행하는 또는 예를 들어 그의 (0,0,0) 로컬 좌표를 중심으로 플레이어를 회전시키고 있습니까? 플레이어 모델은 어떻게 정의됩니까? – hacksalot
이제는 지구가 태양을 돌아 다니는 것처럼 특정 지점을 돌고 있지만 지구가 자신의 축을 중심으로 회전하는 것처럼 자신의 축을 중심으로 돌아야합니다. 플레이어 오브젝트는 구/원통/캡슐의 조합 (상위)이며, 상위 플레이어 오브젝트는 강체와 '스크립트 이동'을가집니다. – lakeviking
Transform.Rotate는 기본적으로 로컬 공간에서 회전을 수행합니다. 다른 모든 것들은 동일합니다. 객체의 로컬 (0,0,0)을 중심으로 회전을 수행합니다. 그 점이 플레이어 모델의 지오메트리의 중심이 아니라면, 당신은 당신이 목격하고있는 행동을 볼 수 있습니다. 그렇다면 회전하기 전에 번역을 시도하거나 로컬 좌표를 조정하여 시도 할 필요가 없습니다. 달리 말하자면, 동일한 Y 축을 중심으로 XZ 평면에서 평면 분기를 회전한다고 가정 해 봅시다. 중심점 또는 왼쪽 아래 구석의 (0,0)으로 회전하고 있습니까? – hacksalot