공부하기싫어
article thumbnail

일단 지금까지 만들어놓은 스프라이트를 활용해서

 

플레이어의 기본 이동과 콜라이더를 만들고

 

3마의 폭탄과 튕기는 공의 프리팹을 먼저 구현해 보고자 했다.

 

그리고 일반 바닥과 투명바닥 프리팹을 만들어서 투명바닥 프리팹에 플레이어가 충돌하면 체력을 0으로 만드는 작업을 진행해보고자 했다.

 

플레이어 콜라이더 구성

내가 그린 귀염 뽀작 폭탄

 

프리팹

각각 프리팹을 만들어 주고 있다

 

bounceball prefab

얘가 말썽을 일으켰다

 

왜 저기서 시작하죠

게임을 시작하면 입력해놓은 좌표에서 더 높은 지점부터 왕복운동을 시작하는거임 ㅡㅡ

왜이러는거임? ㅡㅡ

 

 

player script

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


public class player : MonoBehaviour 
{
    Rigidbody2D rigidbody2d;
    public float player_Speed = 20f;
    public int player_max_health=3;
    int player_current_health;
    void Start() {
        rigidbody2d = GetComponent<Rigidbody2D>();
        player_current_health=player_max_health;
    }

    void Update() {
        float horizontal = Input.GetAxis("Horizontal");

        Vector2 position = rigidbody2d.position;

        position.x = position.x + player_Speed * horizontal * Time.deltaTime;

        rigidbody2d.MovePosition(position);
    }

    public void ChangeHealth(int amount)
    {
        player_current_health = Mathf.Clamp(player_current_health + amount, 0, player_max_health);
        Debug.Log(player_current_health + "/" + player_max_health);
    }

}//class end

 

bounceball script

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

public class bounceball : MonoBehaviour
{
    
    public float bounceball_speed=10.0f;
    public bool horizontal;
    Rigidbody2D bb_RB;
    public float changeTime = 1.0f;
    float timer;
    int direction = 1;

    void Start()
    {
        bb_RB = GetComponent<Rigidbody2D>();
        timer = changeTime;
    }

    // Update is called once per frame
    void Update()
    {
        timer -= Time.deltaTime;
        if (timer < 0)
        {
            direction = -direction;
            timer = changeTime;
        }

        Vector2 position = bb_RB.position;
        if (horizontal)
        {
            position.y = position.y + Time.deltaTime * bounceball_speed * direction;
        }
        else {
            position.y = position.y + Time.deltaTime * bounceball_speed * direction;
        }
        
        bb_RB.MovePosition(position);
    }

    void OnCollisionEnter2D(Collision2D other)
    {
        player player = other.gameObject.GetComponent<player>();

        if (player != null)
        {
            player.ChangeHealth(-1);
        }
    }
}

 

time 설정에 문제가 있는건지 갑자기 위로 팍 튀어 올라서 그 지점부터 왕복운동을 시작한다...

 

콜라이더도 제대로 작동하지 않아서 플레이어의 체력이 감소해서 로그 창에 올라오지도 않는다...

 

 

오늘은 뭔가 닥치는대로 막 건드려서 정신없이 프로젝트를 진행했어서 어디서 뭐가 틀린건지 잘 모르겠다.

내일부터는 할 것을 딱 정해놓고 시작해야겠어

그러므로 내일 할 것.

 

1. bounceball 프리팹 완성 (왕복운동의 가속도까지 구현)

2. 투명 바닥 프리팹 완성 (플레이어와 충돌하면 플레이어의 체력이 0이 되도록 구현)

3. 프로젝트 폴더 github 연동 + 지속 커밋 가능하도록 설정 (meta파일 visible해서)

 

까지 구현해봐야겠다.

 

혼자할라니까 너무 빡세네 술마렵다 ㅠㅠ