0
대각선으로 물체를 움직이는 컨트롤러가 있습니다. 왼쪽 화살표는 플레이어를 앞으로 그리고 왼쪽으로 45도 이동시키고 오른쪽 화살표는 오른쪽으로 이동해야합니다. 플레이어를 현재 위치로 상대적으로 이동시키고 싶습니다. 지금은 상대적으로 점 (0,0,0)으로 이동합니다. 내 코드Unity 3d에서 고정 거리를 어떻게 이동합니까?
:
public class JollyJumper : MonoBehaviour {
protected CharacterController control;
public float fTime = 1.5f; // Hop time
public float fRange = 5.0f; // Max dist from origin
public float fHopHeight = 2.0f; // Height of hop
private Vector3 v3Dest;
private Vector3 v3Last;
private float fTimer = 0.0f;
private bool moving = false;
private int number= 0;
private Vector2 direction;
public virtual void Start() {
control = GetComponent<CharacterController>();
if(!control){
Debug.LogError("No Character Controller");
enabled=false;
}
}
void Update() {
if (fTimer >= fTime&& moving) {
var playerObject = GameObject.Find("Player");
v3Last = playerObject.transform.position;
Debug.Log(v3Last);
v3Dest = direction *fRange;
//v3Dest = newVector* fRange + v3Last;
v3Dest.z = v3Dest.y;
v3Dest.y = 0.0f;
fTimer = 0.0f;
moving = false;
}
if(Input.GetKeyDown(KeyCode.LeftArrow)){
moving = true;
direction = new Vector2(1.0f, 1.0f);
number++;
}
if(Input.GetKeyDown(KeyCode.RightArrow)){
moving = true;
direction = new Vector2(-1.0f, 1.0f);
number++;
}
if(moving){
Vector3 v3T = Vector3.Lerp (v3Last, v3Dest, fTimer/fTime);
v3T.y = Mathf.Sin (fTimer/fTime * Mathf.PI) * fHopHeight;
control.transform.position = v3T;
fTimer += Time.deltaTime;
}
}
}
어떻게이 문제를 해결할 수 있습니까? 어떤 아이디어? 고마워요!
모든 코드 조각 날 줄 수 있습니까? 나는 프로그래밍에서 경험했지만 Unity3d에서는 경험하지 못했습니다. –
Unity Inspector에서 플레이어를 플레이어로 끌어 놓기 만하면됩니다. 런타임 중에 이들 중 하나를 생성하면'controller.transform.parent = player.transform'을 설정하십시오. –
죄송합니다. 질문을 수정하여 명확하게 처리했습니다. 나는 플레이어가 오른쪽과 왼쪽으로 뛰어 넘을 수는 없다. palyer가 상대적으로 (0, 0, 0)으로 이동하기 때문에 v3dest를 계속 증가시켜야합니다. –