728x90
플레이어가 물체를 옮기는 만큼 HP가 깎이도록 만들거에요
나무박스는 1m에 -1HP, 금속박스는 1m에 -2HP
HP는 UI로 보여줄 거에요
바닦, 큐브2개, 캡슐(플레이어) 하나를 준비해 주세요
잘 보이게 객체에 색을 입혀줄게요
프로젝트에서 우클릭 > Credat > Meterial
색일 지정해 주시고
나무는 Metalli과 Smoothness를 낮게, 금속 상자는 높게 설정해주세요
플레이어에 newHP넣고
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float newHP = 100;
void Update()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
transform.Translate(new Vector3(h, 0, v) * 10f * Time.deltaTime);
}
}
박스에서 이동량 만큼 hp를 깎았습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Box : MonoBehaviour
{
public float hp; // 깎을 hp
public float distance; // 이동거리
GameObject player;
Player playerSc;
Vector3 prevPos; // 처음 위치
// Start is called before the first frame update
void Start()
{
this.player = GameObject.Find("Player");
playerSc = player.GetComponent<Player>();
}
// Update is called once per frame
void Update()
{
// 위치 업데이트
Vector3 pos = transform.position;
Vector3 dis = prevPos - pos;
playerSc.newHP -= hp * dis.magnitude;
prevPos = pos;
}
}
플레이어가 하나일 때는 public으로 정해줄 필요 없이 아래의 코드처럼 플레이어의 코드를 불러올 수 있습니다.
GameObject player;
Player playerSc;
void Start(){
this.player = GameObject.Find("Player");
playerSc = player.GetComponent<Player>();
}
~.magnitude 는 벡터 사이의 거리 절댓값을 반환합니다.
void Update()
{
// 위치 업데이트
Vector3 pos = transform.position;
Vector3 dis = prevPos - pos;
playerSc.newHP -= hp * dis.magnitude;
prevPos = pos;
}
큐브에 Box .cs를 넣고 거리당 깎을 hp를 적어주세요
슬라이더는 자동으로 찾게 해서
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class HpSlyder : MonoBehaviour
{
Slider slHP;
GameObject player;
Player playerSc;
// Start is called before the first frame update
void Start()
{
this.player = GameObject.Find("Player");
playerSc = player.GetComponent<Player>();
slHP = GetComponent<Slider>();
}
private void Update()
{
UpdateHP();
}
public void UpdateHP()
{
this.slHP.GetComponent<Slider>().value = playerSc.newHP;
Debug.Log(playerSc.newHP);
}
}
UI를 사용할거라
using UnityEngine.UI;
를 꼭 추가해주세요
슬라이더에 색을 정해주세요
슬라이더의 Max값을 100으로(newHP처음 값)바꿔주세요
https://youtu.be/KvLgwS98paA
코드
'UNITY > Unity Study' 카테고리의 다른 글
유니티 문법 (0) | 2023.08.19 |
---|---|
벡터 사이의 거리 구하기 (0) | 2023.08.19 |
Roulette (0) | 2023.08.14 |
플레이어 따라다니는 텍스트 만들기 (0) | 2023.08.14 |
계단에서 굴러떨어짐 고치기 (0) | 2023.08.05 |