거의 알고리즘 일기장

8. 유니티 _ 몬스터 움직임 구현 본문

유니티

8. 유니티 _ 몬스터 움직임 구현

건우권 2020. 5. 5. 22:49

몬스터 움직임 Script

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

public class Enermy : MonoBehaviour
{
    Rigidbody2D rigid;
    //-1 0 1
    Animator anim;
    public int nextMove;
    SpriteRenderer spRender;

    private void Awake()
    {
        spRender = GetComponent<SpriteRenderer>();
        anim = GetComponent<Animator>();
        rigid = GetComponent<Rigidbody2D>();
        Think();
    }

    private void FixedUpdate()
    {
        //move
        rigid.velocity = new Vector2(nextMove, rigid.velocity.y);

	//몬스터가 벽에 떨어지지 않는 방법, 저번에 ray를 쏴서 밑이 허공인지 체크
        //platform check
        Vector2 frontVec = new Vector2(rigid.position.x + nextMove*0.3f, rigid.position.y);
        Debug.DrawRay(frontVec, Vector3.down, new Color(0, 1, 0));

        RaycastHit2D rayHit = Physics2D.Raycast(frontVec, Vector3.down, 1,
                                            LayerMask.GetMask("Platform"));

        if (rayHit.collider == null)
        {
            nextMove *= (-1);
            Motion();
        }
    }
    
    void Turn()
    {
        //방향전환
        if (nextMove == 1)
            spRender.flipX = true;
        else if (nextMove == -1)
            spRender.flipX = false;
    }

    void Motion()
    {
        //emermy motion
        if (nextMove == 0)
            anim.SetBool("isWalking", false);
        else
            anim.SetBool("isWalking", true);
        Turn();
    }

    void Think()
    {
        //랜덤 방법
        nextMove = Random.Range(-1, 2);
        float nextMoveTime = Random.Range(2.0f, 4.0f);     
        Motion();
        Invoke("Think", nextMoveTime);
    }
}

동작


참고

https://www.youtube.com/user/GoldmetalYT

 

골드메탈

게임 개발 & 그림 그리기 & 게임 플레이 각종 컨텐츠를 방송하는 스트리머 골드메탈 채널입니다. 주 컨텐츠는 게임 개발이며 유니티 엔진을 기반으로 컨텐츠를 진행합니다. - 2019.03.15 구독자 5천명 돌파! 감사합니다. - 2019.12.02 구독자 1만명 돌파! 감사합니다.

www.youtube.com


후기

반응형
Comments