Notice
Recent Posts
Recent Comments
Link
거의 알고리즘 일기장
8. 유니티 _ 몬스터 움직임 구현 본문
몬스터 움직임 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
후기
반응형
'유니티' 카테고리의 다른 글
10. 유니티 _ 간단 2D 플랫포머 게임 (0) | 2020.05.07 |
---|---|
9.유니티 _ 피격 이벤트 구현 (0) | 2020.05.06 |
7. 유니티 _ 타일맵 (0) | 2020.05.05 |
6. 유니티 _ 아틀라스, 애니메이션, 이동, 점프 (3) | 2020.05.05 |
5. 유니티 _ 간단 3D게임 (0) | 2020.05.03 |
Comments