C# 생초보 점프 구현에 대해 질문드립니다.

안녕하세요. 우선 다른 분들 질문에 비해 너무 간단한 질문인 것 같아 어이없으실 수도 있겠지만ㅜㅜ 아무리 붙잡고 있어도 해결 방법을 도무지 모르겠어서 질문 드립니다. 현재 만들고 싶은 장면이

  1. 화면 밖에서 캐릭터가 걸어나와 멈춘다. -> 2. 주인공을 클릭하면 말풍선으로 대화가 뜬다. -> 대화가 끝나면 캐릭터가 화면 밖으로 뛰어내린다.(점프 애니메이션 실행+화면 밖에 지면을 하나 더 만들어 착지한 순간 씬 전환 트리거? 넣으려고 생각하고 있습니다.) -> 4. 이후 화면 전환

인데 2번까지는 강좌들이랑 찾아보면서 끝냈으나 3번 점프에서 막히네요. 우선 2번까지 구현한 코드는

public class move : MonoBehaviour
{
public Vector3 startPos = Vector3.zero;
public Vector3 targetPos = new Vector3(10, 0, 0);

public float startTime;
public float duration;
public Animator ani;


void Start()
{
    startTime = Time.time;
}

// Update is called once per frame
void Update()
{
    float progress = (Time.time - startTime) / duration;

    progress = Mathf.Clamp(progress, 0, 1);

    Vector3 newPos = (startPos + (targetPos - startPos) * progress) + new Vector3(0, 0.5f, 0);
    transform.position = newPos;

    
}

}

이렇게 했고 현재 점프 스크립트에 써둔 코드는

public class Jump : MonoBehaviour
{
public float jump;

// Start is called before the first frame update
void Start()
{
    
}

// Update is called once per frame
void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        GetComponent<Rigidbody2D>().AddForce(new Vector3(10, 50, 0), ForceMode2D.Impulse);
    }
    
}

}

입니다. 외에도 점프 구현이 되지 않아 애니메이터도 만져보고 다른 여러 코드도 써봤는데 도무지 문제점을 모르겠더라구요. 처음 캐릭터가 등장하는 스크립트에 점프 코드도 넣어보고 위처럼 따로 점프 스크립트도 만들어 보고… 나름 열심히 머리 굴려봤는데ㅠㅠ 어디서부터 놓쳤는지를 모르겠어요. 도와주시면 감사하겠습니다…

일단 이 스크립트는 (점프시키고 싶은 게임오브젝트인) 주인공 게임오브젝트에 달아줘야합니다. 그냥 GetComponent라고 쓰면 이 스크립트가 달린 게임오브젝트들의 Component를 가져오는 것이라 그렇습니다.

그리고
Jump 클래스의 코드의 Update()함수 안의

if (Input.GetKeyDown(KeyCode.Space))
    {
        GetComponent<Rigidbody2D>().AddForce(new Vector3(10, 50, 0), ForceMode2D.Impulse);
    }

이 부분에서 Space를 누를 때 한 frame만 AddForce를 하게되는데 혹시 가하는 힘이 적은 것은 아닐까요??
한번 가하는 힘을 키워서 해보세요!

if (Input.GetKeyDown(KeyCode.Space))
    {
        GetComponent<Rigidbody2D>().AddForce(new Vector3(10000, 50000, 0), ForceMode2D.Impulse);
    }

엄청 크게 이런식으로 수정해서 한번 해보셔요.

이 문제가 아니라면 아래에 것들을 체크해보세요

  1. 이 Jump스크립트를 주인공 게임오브젝트에 달았는지 체크
  2. 주인공 게임오브젝트에 달아야되는데 딴곳에 스크립트를 add한건 아닌지 체크
  3. 주인공 게임오브젝트에 Rigidbody2D(RigidBody랑 다릅니다!)를 add했는지 체크

ForceMode2D.Force 함 써본다던가?

그거가 아니라면… 유니티라서 전체 프로젝트를 봐야 알 거 같아요…
캐릭터 질량이 막 무거워서 그런 걸 수도 있고 그러자나요?
뭐 구지 한다면 코드로 애니메이션 만드는 거야 AddForce말고 Translate()나 Transform의 position값 조절해서 만들려면 만들 수 있으니…

감사합니다ㅠㅠ 처음 적었던 코드가 제자리로 돌아오게 설계돼있는 코드라 점프를 해도 실행되지 않는 것처럼 보인 거였다네요. 친절한 답변 감사합니다88)!!!