// 상하 좌우 이동 코드는 아래와 같음
// 1번 (벽통과 문제)
transform.position += moveDirection * moveSpeed * (isWalk ? 0.3f : 1f) * Time.deltaTime;
// 2번 (점프가 안됨)
rigid.velocity = moveDirection * moveSpeed * (isWalk ? 0.3f : 1f);
점프 코드는 아래와 같음
void Jump2()
{
if (Input.GetButtonDown("Jump") && !isJump)
{
rigid.AddForce(Vector3.up * 10, ForceMode.Impulse);
anim.SetBool("isJump",true);
anim.SetTrigger("doJump");
isJump = true;
}
}
이동 코드는 아래와 같음
void Move()
{
if (isJump){
isJumped=jumpForce;}
else{
isJumped=0f;}
moveDirection = new Vector3(-Input.GetAxisRaw("Vertical"), 0, Input.GetAxisRaw("Horizontal")).normalized;
// 1번 (벽통과 문제)
//transform.position += moveDirection * moveSpeed * (isWalk ? 0.3f : 1f) * Time.deltaTime;
// 2번 (점프가 안됨)
rigid.velocity = moveDirection * moveSpeed * (isWalk ? 0.3f : 1f);
isWalk = Input.GetButton("Walk");
anim.SetBool("isRun", moveDirection != Vector3.zero);
anim.SetBool("isWalk", isWalk);
}
rigid.velocity = moveDirection * moveSpeed * (isWalk ? 0.3f : 1f); <<여기서 moveDirection <<이게 y를 0으로 고정해둔거 아님?
1번을 하면 점프가 된다니까, 암만 봐도 이게 맞는거 같음 1번은 트렌스폼을 옮기는거라 리지드바디는 건드리질 않으니, 점프가 작동되는거고 2번은 리지드바디를 옮기는거라, 여기서 y값을 잡아놓고 있으면, .에드포스로 y를 밀어줘도, 이동에서 이미 잡고 있어서 안움직임
moveDirection = new Vector3(-Input.GetAxisRaw("Vertical"), 0, Input.GetAxisRaw("Horizontal")).normalized; 이거때문에 그렇다고? 맞는거같은데??
오오오 해결했음 아래처럼하니까 되네 ㄳㄳ rigid.velocity = new Vector3(moveDirection.x * moveSpeed * (isWalk ? 0.3f : 1f), rigid.velocity.y, moveDirection.z * moveSpeed * (isWalk ? 0.3f : 1f));
하루종일 막혀있었는데 고마워 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
뭔가 통찰의? 답변 한마디가 중요하네 ㄷㄷ