Unity 2D~ 캐릭터 조작 점프 편~
스크립트 건너뛰기
저번에 캐릭터 스크립트 작업을 계속한 녀석.
스페이스 바를 누르고 점프하기
public float flap = 1000f;
void Update () {
if (Input.GetKeyDown("space"))
{
rb2d.AddForce(Vector2.up * flap);
}
}
이것을 추가하면 공백을 누르면 점프합니다
→ 이걸로 인코딩하면 몇 단계를 건너뛸 수 있다
비행량을 변경하고 싶을 때 flap 변경
속도를 바꾸고 싶을 때 Inspentor 라벨의riigidbody2D의GravitScale 수치를 높이면 ok
1 레벨 점프 제한
bool jump = false;
void Update () {
if (Input.GetKeyDown("space") && !jump)
{
rb2d.AddForce(Vector2.up * flap);
jump = true
}
}
void OnCollisionEnter2D(Collision2D other)
{
jump = false;
}
객체 충돌 시 On Collision Enter 2D 호출
2D면 2D 이름을 지정해야 돼요.
주: 충돌하는 대상은 모두collider와rigidbody가 있어야 합니다
지상에 물리적인 법칙이 필요 없으니까 바디type을 static으로 하자.
땅에 부딪힐 때만 점프
각 객체에 레이블을 추가하여 충돌 시 확인할 수 있습니다.
그라운드 객체의 Inspertor Tag을 그라운드로 변경
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.CompareTag("Ground"))
{
jump = false;
}
}
이런 느낌.
총결산
아마 이런 느낌일 거예요. 초기본적인 수평 스크롤 동작이 완성됐죠.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour {
//変数定義
public float flap = 1000f;
public float scroll = 5f;
float direction = 0f;
Rigidbody2D rb2d;
bool jump = false;
// Use this for initialization
void Start () {
//コンポーネント読み込み
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update () {
//キーボード操作
if (Input.GetKey(KeyCode.RightArrow))
{
direction = 1f;
}else if (Input.GetKey(KeyCode.LeftArrow))
{
direction = -1f;
}else
{
direction = 0f;
}
//キャラのy軸のdirection方向にscrollの力をかける
rb2d.velocity = new Vector2(scroll * direction, rb2d.velocity.y);
//ジャンプ判定
if (Input.GetKeyDown("space") && !jump)
{
rb2d.AddForce(Vector2.up * flap);
jump = true;
}
}
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.CompareTag("Ground"))
{
jump = false;
}
}
}
Reference
이 문제에 관하여(Unity 2D~ 캐릭터 조작 점프 편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yukipenguin96/items/d212e32a4c49038d68ef
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public float flap = 1000f;
void Update () {
if (Input.GetKeyDown("space"))
{
rb2d.AddForce(Vector2.up * flap);
}
}
bool jump = false;
void Update () {
if (Input.GetKeyDown("space") && !jump)
{
rb2d.AddForce(Vector2.up * flap);
jump = true
}
}
void OnCollisionEnter2D(Collision2D other)
{
jump = false;
}
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.CompareTag("Ground"))
{
jump = false;
}
}
아마 이런 느낌일 거예요. 초기본적인 수평 스크롤 동작이 완성됐죠.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour {
//変数定義
public float flap = 1000f;
public float scroll = 5f;
float direction = 0f;
Rigidbody2D rb2d;
bool jump = false;
// Use this for initialization
void Start () {
//コンポーネント読み込み
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update () {
//キーボード操作
if (Input.GetKey(KeyCode.RightArrow))
{
direction = 1f;
}else if (Input.GetKey(KeyCode.LeftArrow))
{
direction = -1f;
}else
{
direction = 0f;
}
//キャラのy軸のdirection方向にscrollの力をかける
rb2d.velocity = new Vector2(scroll * direction, rb2d.velocity.y);
//ジャンプ判定
if (Input.GetKeyDown("space") && !jump)
{
rb2d.AddForce(Vector2.up * flap);
jump = true;
}
}
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.CompareTag("Ground"))
{
jump = false;
}
}
}
Reference
이 문제에 관하여(Unity 2D~ 캐릭터 조작 점프 편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yukipenguin96/items/d212e32a4c49038d68ef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)