728x90
반응형
bool isDodge;
void Update()
{
Dodge();
}
void Dodge()
{
if (jDown && moveVec != Vector3.zero && !isJump && !isDodge)
{
speed *= 2;
anim.SetTrigger("doDodge");
isDodge = true;
Invoke("DodgeOut", 0.4f);
}
}
void DodgeOut()
{
speed *= 0.5f;
isDodge = false;
}
회피를 위한 스크립트를 추가합니다.
회피 중 방향이 전환되는 걸 막기 위해 dodgeVec을 선언하고
Move()에 조건을 걸어 회피 중 방향이 고정되게 합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float speed;
public float jumppower;
float hAxis;
float vAxis;
bool wDown;
bool jDown;
bool isJump;
bool isDodge;
Vector3 moveVec;
Vector3 dodgeVec;
Rigidbody rigid;
Animator anim;
void Awake()
{
rigid = GetComponent<Rigidbody>();
anim = GetComponentInChildren<Animator>();
}
void Update()
{
GetInput();
Move();
Turn();
Jump();
Dodge();
}
void GetInput()
{
hAxis = Input.GetAxisRaw("Horizontal");
vAxis = Input.GetAxisRaw("Vertical");
wDown = Input.GetButton("Walk");
jDown = Input.GetButtonDown("Jump");
}
void Move()
{
moveVec = new Vector3(hAxis, 0, vAxis).normalized;
if (isDodge)
moveVec = dodgeVec;
transform.position += moveVec * speed * (wDown ? 0.1f : 1f) * Time.deltaTime;
//wDown이 true이면 이동속도 0.1배속
anim.SetBool("isRun", moveVec != Vector3.zero);
anim.SetBool("isWalk", wDown);
}
void Turn()
{
transform.LookAt(transform.position + moveVec); //이동하는 방향으로 바라보기
}
void Jump()
{
if (jDown && moveVec == Vector3.zero && !isJump && !isDodge)
{
rigid.AddForce(Vector3.up * jumppower, ForceMode.Impulse); //jumppower만큼 위로 힘을 가함
anim.SetBool("isJump", true);
anim.SetTrigger("doJump");
isJump = true;
}
}
void Dodge()
{
if (jDown && moveVec != Vector3.zero && !isJump && !isDodge)
{
dodgeVec = moveVec;
speed *= 2; //회피시 속도 2배
anim.SetTrigger("doDodge");
isDodge = true;
Invoke("DodgeOut", 0.5835f); //회피 시작 0.5835초후에 DodgeOut 실행
}
}
void DodgeOut()
{
speed *= 0.5f; //회피시 2배로 늘었던 속도를 원래대로
isDodge = false;
}
void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.tag == "Floor")
{
anim.SetBool("isJump", false);
isJump = false; //Floor에 접촉시 isJump를 false로 되돌려 점프가 가능한 상태로 변경
}
}
}
회피 시 이동속도를 2배로 올렸으니 애니메이션 재생속도도 2배로 올려줍니다.
728x90
반응형
'유니티 > AA(3D 쿼터뷰 액션 게임)' 카테고리의 다른 글
AA(13) - 소모아이템 획득 (1) | 2021.09.14 |
---|---|
AA(12) - 아이템 제작&착용&교체 (0) | 2021.09.14 |
AA(10) - 점프 구현 (0) | 2021.09.12 |
AA(9) - 맵&캐릭터 변경, 플레이어 이동 (0) | 2021.09.12 |
AA(8) - 드랍 무기 입수&착용 (0) | 2021.09.10 |