Unity 2D 로 프로젝트 생성
⚠️ 오류 떴당
유니티 허브 > Installs > 현재 버전에서 설정 > Add modules 에서 설치
currently selected scripting backend(il2cpp) is not installed
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private bool isJump = false;
private bool isTop = false;
public float jumpHeight = 0;
public float jumpSpeed = 0;
private Vector2 startPosition;
void Start()
{
startPosition = transform.position;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) // spacebar 누르면
{
isJump = true;
}
else if (transform.position.y <= startPosition.y)
{
isJump = false;
isTop = false;
transform.position = startPosition;
}
if (isJump)
{
if (transform.position.y <= jumpHeight - 0.1f && !isTop)
{
transform.position = Vector2.Lerp(transform.position,
new Vector2(transform.position.x, jumpHeight), jumpSpeed * Time.deltaTime);
}
else
{
isTop = true;
}
if (transform.position.y > startPosition.y && isTop)
{
transform.position = Vector2.MoveTowards(transform.position,
startPosition, jumpSpeed * Time.deltaTime);
}
}
}
}
Player2, Player3 이미지 두개를 선택하고 하이어라키 창에 놓으면
애니메이션 생성 창이 뜬다
하이어라키에 생성된건 지우기
Animator 컴포넌트 생성 후 방금 만든 컨트롤러 넣기
Idle 우클릭 > Set as Default State
Transition 생성
Idel -> Run
Run -> Idle
private Animator animator;
void Start()
{
startPosition = transform.position;
animator = GetComponent<Animator>();
}
void Update()
{
// 달리는 애니메이션으로 설정하기
animator.SetBool("run", true);
...
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GroundScroller : MonoBehaviour
{
public SpriteRenderer[] tiles;
public float speed;
void Start()
{
}
void Update()
{
for (int i = 0; i < tiles.Length; i++)
{
tiles[i].transform.Translate(new Vector2(-1, 0) * Time.deltaTime * speed);
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GroundScroller : MonoBehaviour
{
public SpriteRenderer[] tiles;
public Sprite[] groundImg;
public float speed;
private SpriteRenderer temp;
void Start()
{
temp = tiles[0];
}
void Update()
{
for (int i = 0; i < tiles.Length; i++)
{
if (-5 >= tiles[i].transform.position.x)
{
for (int q = 0; q < tiles.Length; q++)
{
if (temp.transform.position.x < tiles[q].transform.position.x)
temp = tiles[q];
}
tiles[i].transform.position = new Vector2(temp.transform.position.x + 1, -0.3f);
tiles[i].sprite = groundImg[Random.Range(0, groundImg.Length)];
}
}
for (int i = 0; i < tiles.Length; i++)
{
tiles[i].transform.Translate(new Vector2(-1, 0) * Time.deltaTime * speed);
}
}
}