Notice
Recent Posts
Recent Comments
Link
거의 알고리즘 일기장
6. 유니티 _ 아틀라스, 애니메이션, 이동, 점프 본문
아틀라스를 사용하는 이유? 드로우콜을 줄이기 위해서 사용 ( 최적화와 관련 )
애니메이션 동작
이동, 점프 ( 애니메이션 모션까지 )
Player C# Script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float maxSpeed;
public float jumpPower;
bool isJump;
Rigidbody2D rigid;
SpriteRenderer spriteRenderer;
Animator anim;
private void Awake()
{
isJump = false;
anim = GetComponent<Animator>();
rigid = GetComponent<Rigidbody2D>();
spriteRenderer = GetComponent<SpriteRenderer>();
}
//단발적인 입력은 update에
void Update()
{
//stop speed
if(Input.GetButtonUp("Horizontal"))
{
//normalized -> 벡터 크기를 1로 만든 상태
rigid.velocity = new Vector2(rigid.velocity.normalized.x *0.5f, rigid.velocity.y);
}
//jump
if (Input.GetButtonDown("Jump") && isJump == false)
{
isJump = true;
rigid.AddForce(new Vector2(rigid.velocity.x, jumpPower), ForceMode2D.Impulse);
}
//방향전환
if (Input.GetButton("Horizontal"))
{
bool v = (Input.GetAxisRaw("Horizontal") == -1.0f);
spriteRenderer.flipX = v;
}
//walking motion
if (Mathf.Abs(rigid.velocity.x) <= 0.3f)
anim.SetBool("isWalking", false);
else
anim.SetBool("isWalking", true);
//jump motion
if(isJump == true)
anim.SetBool("isJumping", true);
else
anim.SetBool("isJumping", false);
}
private void FixedUpdate()
{
//move by key control
float h = Input.GetAxisRaw("Horizontal");
rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);
if (rigid.velocity.x > maxSpeed)
rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);
else if (rigid.velocity.x < maxSpeed*(-1))
rigid.velocity = new Vector2(maxSpeed*(-1), rigid.velocity.y);
if (rigid.velocity.y < 0)
{
//landing platform, 레이저로 쏴서 맞춘 첫번째 물체를 식별
Debug.DrawRay(rigid.position, Vector3.down, new Color(0, 1, 0));
RaycastHit2D rayHit = Physics2D.Raycast(rigid.position, Vector3.down, 1,
LayerMask.GetMask("Platform"));
//땅에 닿았을때 다시 점프가능
if (rayHit.collider != null)
if (rayHit.distance <= 0.5)
isJump = false;
}
}
private void OnCollisionEnter2D(Collision2D collision)
{
}
}
참고
https://www.youtube.com/user/GoldmetalYT
후기
간단하고 재밌다.
반응형
'유니티' 카테고리의 다른 글
8. 유니티 _ 몬스터 움직임 구현 (0) | 2020.05.05 |
---|---|
7. 유니티 _ 타일맵 (0) | 2020.05.05 |
5. 유니티 _ 간단 3D게임 (0) | 2020.05.03 |
4. 유니티 _ UI만들기 (0) | 2020.05.02 |
3. 유니티 _ 실제와 같은 물체를 만들고 움직이기 (2) | 2020.05.02 |
Comments