본문 바로가기
App && Game

[유니티] 도트 게임 만들기 - 1일차 (애니메이터 컨트롤러 파라미터 스크립트로 조절 / animator parameter script / 유니티 캐릭터 점프 구현하기 / 무한 움직이는 땅 구현하기)

by 배애앰이 좋아 2020. 12. 6.
반응형

도트 게임 기획 :

running game - 수집형 게임 

 

2020.12.06 시작 - 1일차

 

소스 파일 : 유니티 asset store 이용

 

메인 화면 :

 

 

위에서 해야할 일 :

1. 다른 버튼 제작(뽑기 버튼 / 무기 도감 / 캐릭터 도감)

2. 게임 이름 정해서 왼쪽 상단에 적기

 

게임 화면 :

 

 

이번에 한 일 :

1. 캐릭터 움직임(애니메이션)

2. 지형 움직이기

 

다음에 해야할 일 :

0. 배경 찾아서 넣어주기

1. 장애물 설정

2. 충돌 처리 설정

3. 점수 UI 제작 등등

 

< 스크립트로 애니메이터 파라미터 변경하기 >

 

1) 애니메이터 선언 및 파리미터 설정 스크립트

Animator animator;
animator = GetComponent<Animator>();
animator.SetBool("jump", true);

 

2) 형에 따른 파라미터 설정 방식

animator.SetFloat("New Float", 2.2f); //Float형
animator.SetInteger("New Int", 1); //Int형
animator.SetBool("New Bool", true); //Bool형

// F 키 눌렸을 때 파라미터 값 바뀌게 하기
if (Input.GetKeyDown(KeyCode.F))
{
	animator.SetFloat("New Float", 2.2f);
}

 

< 캐릭터, 땅, 장애물 왼쪽으로 움직이게 하기 >

transform.Translate(Vector2.left * Time.deltaTime * moveSpeed);

 

< 캐릭터 점프 코드 >

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    bool isJump = false;
    bool istop = false;
    public float jumpHeight = 0;
    public float jumpSpeed = 0;
    Vector2 startPos;
    Animator animator;

    void Start()
    {
        startPos = transform.position;
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            isJump = true;
            animator.SetBool("jump", true);
            Debug.Log("jump");
        }
        else if(transform.position.y <= startPos.y)
        {
            isJump = false;
            istop = false;
            animator.SetBool("jump", false);
            transform.position = startPos;
        }

        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 > startPos.y && istop)
            {
                transform.position = Vector2.MoveTowards(transform.position, startPos, jumpSpeed * Time.deltaTime);
            }
        }

    }
}

 

< 땅 무한 이동 시키는 코드 >

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ground : MonoBehaviour
{
    public SpriteRenderer[] tiles;
    public Sprite[] groundImage;
    public float speed;

    void Start()
    {
        temp = tiles[0];
    }
    SpriteRenderer temp;

    void Update()
    {
        Debug.Log(tiles.Length);
        for(int i=0; i<tiles.Length; i++)
        {
            if(-12>=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 + 2, temp.transform.position.y);
                //tiles[i].sprite = groundImage[Random.Range(0, groundImage.Length)];
            }
        }
        for(int i=0; i<tiles.Length; i++)
        {
            tiles[i].transform.Translate(new Vector2(-1, 0) * Time.deltaTime * speed);
        }
        //speed = speed + 0.01f;
    }
}

 

참고 자료 :

www.youtube.com/watch?v=7Vgb8MoWIq8

www.youtube.com/watch?v=IkvYstCzcoc&t=1168s

 

반응형

댓글