오늘은 저주가 아닌 공 ( 만들고 있는 패턴에서는 빨간 + 노란 공) 을 만들어서
이 공들을 잘못 부시게 되면 체력을 깎도록 해볼꺼고
맥도날드는 일단 플레이어가 어느정도 거리 안에 들어오면 애니메이션이 재생되게끔 하는 것 만 우선 구현을 해 보려고 한다.
if (Input.GetKeyDown(KeyCode.Q)) { //q키 상호작용
animator.SetBool("attacking",true);
RaycastHit2D ball_hit = Physics2D.Raycast(rigidbody2d.position + Vector2.up * 0.2f, lookDirection, 2.0f, LayerMask.GetMask("balls"));
RaycastHit2D wrong_ball_hit = Physics2D.Raycast(rigidbody2d.position + Vector2.up * 0.2f, lookDirection, 2.0f, LayerMask.GetMask("other_balls"));
string ballN=ball_hit.collider.gameObject.name;
string wrong_ballN=wrong_ball_hit.collider.gameObject.name;
if (ball_hit.collider != null) {
Debug.Log("keydown Q : " + ball_hit.collider.gameObject);
balls blueball = ball_hit.collider.GetComponent<balls>();
if (blueball != null)
{
curse_count = curse_count - blueball.hit(ballN);
Debug.Log("left curse_count : " + curse_count);
}
}
if (wrong_ball_hit.collider != null) {
Debug.Log("keydown Q : wrong balls - " + wrong_ball_hit.collider.gameObject);
balls RorYball = wrong_ball_hit.collider.GetComponent<balls>();
if (RorYball != null)
{
RorYball.wrongballs(wrong_ballN);
ChangeHealth(-1);
}
}
} else {
animator.SetBool("attacking", false);
}
이런식으로 해보려고 했는데
안돼버림
?
고침
player.cs update()
if (Input.GetKeyDown(KeyCode.Q)) { //q키 상호작용
animator.SetBool("attacking",true);
RaycastHit2D ball_hit = Physics2D.Raycast(rigidbody2d.position + Vector2.up * 0.2f, lookDirection, 2.0f, LayerMask.GetMask("balls"));
string ballN=ball_hit.collider.gameObject.name;
if (ball_hit.collider != null) {
Debug.Log("keydown Q : " + ball_hit.collider.gameObject);
balls judge_ball = ball_hit.collider.GetComponent<balls>();
if (judge_ball != null)
{
if (judge_ball.hit(ballN)) {
curse_count = curse_count - 1;
Debug.Log("left curse_count : " + curse_count);
} else {
ChangeHealth(-1);
}
} else { ;}
}
} else {
animator.SetBool("attacking", false);
}
balls.cs hit()
public bool hit(string ballname) {
ball=GameObject.Find(ballname);
Destroy(ball);
if (ballname=="ball_blue_1" || ballname=="ball_blue_2" || ballname=="ball_blue_3") {
return true;
}
else {
return false;
}
}
player 가 q를 입력했을 때, 앞의 2 거리 안에 있는 콜라이더 를 가진 오브젝트의 이름을 따와서
이게 파란공 중 하나면 true 를 반환하고 아니면 false 를 반환하게 해서
true 라면 저주 수치를 깎고, false 라면 체력을 1 깎도록 했다.
맥도날드의 공격을 어떻게 구현해야 하나 찾던 도중
https://www.youtube.com/watch?v=_tSxQ9f6tX0
진짜 정말 너무너무 유용한 영상이다...
이걸 보면서 나중에 공격을 구현해보도록 하고
오늘은 일단 플레이어가 어느정도 까지 오면 애니메이션이 재생되도록 해보자
맥도날드 스크립트
public class McD : MonoBehaviour
{
Animator animator;
bool onrange=false;
// Start is called before the first frame update
void Start()
{
animator = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
if(onrange) { //사거리 오브젝트를 플레이어가 밟았다?
animator.SetBool("onrange",true);
}
}
public void onRange() {
onrange=true;
Debug.Log("Player is within range");
}
}
범위 상자 스크립트
public class rangeBox : MonoBehaviour
{
public GameObject McD;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
void OnTriggerEnter2D(Collider2D other)
{
player controller = other.GetComponent<player>();
if (controller != null)
{
McD.GetComponent<McD>().onRange();
}
}
}
범위 상자와 플레이어가 충돌하면 맥도날드의 애니메이션이 재생되도록 설정해봤다.
아주 잘 되었다.
내일은 여친이랑 300일이라 아마 작업 할 시간이 없을것 같다.
오늘 약 3시간동안 했는데 알차게 잘한듯? ㅋㅋ
친구가 바운스 볼의 속도가 너무 느리다고 해서 속도를 맞춰봐야 할 것 같다.
또, 바닥들의 넓이를 조정하는게 좋을것 같다고 해서 다음 작업할때는 점프 거리에 맞춰서 바닥 길이를 좀 수정해 볼 필요가 있을 것 같다.
그리고 위의 유튜브 영상을 참고해서 맥도날드의 공격을 구현해 보면
폭탄 터지는 범위정도를 구현 해 낼 수 있을 것 같다.
그리고 넉다운을 구현하려면 애니메이션이 필요한데 ㅈㄴ귀찮으니 그냥 너프백으로 바꾸고 스턴으로 처리해보자
이제 술마시러가야딩