[유니티] 쯔꾸르 게임 제작하기 : 캐릭터 애니메이션
2023. 7. 23. 10:52ㆍ기타(이론)/컴퓨터학과 이론
애니메이션을 포함해서 잘 움직여진다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
public class MovingObjects : MonoBehaviour
{
public float speed;
private Vector3 vector;
public float runSpeed;
private float applyRunSpeed;
private bool applyRunFlag = false;
public int walkCount;
private int currentWalkCount;
private bool canMove = true;
private Animator animator;
// Start is called before the first frame update
void Start()
{
animator = GetComponent<Animator>();
}
IEnumerator MoveCoroutine()
{
while (Input.GetAxisRaw("Vertical") != 0 || Input.GetAxisRaw("Horizontal") != 0)
{
if (Input.GetKey(KeyCode.LeftShift))
{
applyRunSpeed = runSpeed;
applyRunFlag = true;
}
else
{
applyRunSpeed = 0;
applyRunFlag = false;
}
vector.Set(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"), transform.position.z);
if (vector.x != 0)
vector.y = 0;
else if (vector.y != 0)
vector.x = 0;
animator.SetFloat("DirX", vector.x);
animator.SetFloat("DirY", vector.y);
animator.SetBool("Walking", true);
while (currentWalkCount < walkCount)
{
if (vector.x != 0)
{
transform.Translate(vector.x * (speed + applyRunSpeed), 0, 0);
}
else if (vector.y != 0)
{
transform.Translate(0, vector.y * (speed + applyRunSpeed), 0);
}
if (applyRunFlag)
currentWalkCount++;
currentWalkCount++;
yield return new WaitForSeconds(0.01f); //반복문이 20번 시행되는데 0.2초
}
currentWalkCount = 0;
}
animator.SetBool("Walking", false);
canMove = true;
}
// Update is called once per frame
void Update()
{
if (canMove)
{
if (Input.GetAxisRaw("Horizontal") != 0 || Input.GetAxisRaw("Vertical") != 0)
{
canMove = false;
StartCoroutine(MoveCoroutine());
}
}
}
}
'기타(이론) > 컴퓨터학과 이론' 카테고리의 다른 글
[면접] 1분 자기소개 (0) | 2023.08.18 |
---|---|
[C언어] memcpy, strcpy (0) | 2023.07.31 |
[유니티] 쯔꾸르 게임 제작하기 : 캐릭터 움직이기 (0) | 2023.07.23 |
[유니티] Delivery Driver 2 (0) | 2023.07.22 |
[유니티] Delivery Driver 1 (0) | 2023.07.22 |