직접 도트를 그리고 pixel per unit을 1으로 맞춘 다음 scale는 안 건드렸습니다 ㅠ
원래 잘 움직이던 캐릭터가 그래비티 스케일이 작은 값일 때도 갑자기 잘 안 움직입니다 ㅠ 도와주시면 감사드리겠습니다 ㅠㅠ
아래는 도트 이미지 설정 창이랑 플레이어 인스펙터 창입니다 ㅠ


이건 제가 쓴 플레이어 움직임에 관한 스크립트 입니다 ㅠ
void FixedUpdate()
{
float h = Input.GetAxisRaw("Horizontal");
rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);
if (rigid.velocity.x > maxSpeed) // Right max Speed
rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);
else if (rigid.velocity.x < maxSpeed * (-1)) // Left Max Speed
rigid.velocity = new Vector2(maxSpeed * (-1), rigid.velocity.y);
}
이렇게 있고 이건 제가 플레이어에 대해 쓴 스크립트 전체 입니다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Playermove : MonoBehaviour
{
public float maxSpeed;
public float JumpPower;
bool isJumping;
Rigidbody2D rigid;
SpriteRenderer spriteRenderer;
public GameManager gameManager;
CapsuleCollider2D capsuleCollider;
void Awake()
{
rigid = GetComponent<Rigidbody2D>();
spriteRenderer = GetComponent<SpriteRenderer>();
capsuleCollider = GetComponent<CapsuleCollider2D>();
isJumping = false;
}
private void Update()
{
//flip.x Direction
if (Input.GetButton("Horizontal"))
spriteRenderer.flipX = Input.GetAxisRaw("Horizontal") == - 1;
//Jump , // 무한 점프 막기
if (Input.GetButtonDown("Jump") && ! isJumping)
rigid.AddForce(Vector2.up * JumpPower, ForceMode2D.Impulse);
isJumping = true;
//Raycast 사물 인식을 이용한 Landing PlatForm 기능 구현하기, isJumping = false;
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 && isJumping)
{
if (rayHit.distance < 1f)
Debug.Log(rayHit.collider.name);
isJumping = false;
}
//Stop Player
if (Input.GetButtonUp("Horizontal"))
rigid.velocity = new Vector2(rigid.velocity.normalized.x * 0.5f, rigid.velocity.y);
}
void FixedUpdate()
{
float h = Input.GetAxisRaw("Horizontal");
rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);
if (rigid.velocity.x > maxSpeed) // Right max Speed
rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);
else if (rigid.velocity.x < maxSpeed * (-1)) // Left Max Speed
rigid.velocity = new Vector2(maxSpeed * (-1), rigid.velocity.y);
}
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Enemy")
{
//Atack
if (rigid.velocity.y < 0 && rigid.transform.position.y > collision.transform.position.y)
{
OnAttack(collision.transform);
}
else
{
OnDameged(collision.transform.position);
}
}
}
void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag == "Item")
{
bool isBronze = collision.gameObject.name.Contains("Bronze");
bool isSilver = collision.gameObject.name.Contains("Silver");
bool isGold = collision.gameObject.name.Contains("Gold");
if (isBronze)
gameManager.totalPoint += 1;
else if (isSilver)
gameManager.totalPoint += 5;
else if (isGold)
gameManager.totalPoint += 30;
//DeActive item
collision.gameObject.SetActive(false);
}
// if player fisnish, this is one of the option
else if (collision.gameObject.tag == "Finish NPC - 1" )
{
// Next Stage
gameManager.Nextstage();
}
}
void OnDameged(Vector2 targetpos)
{
//health down
gameManager.Healthdown();
//Change Layer
gameObject.layer = 9;
//View Alpha
Color color = spriteRenderer.color;
color.a = 0.5f;
spriteRenderer.color = color;
int indic = transform.position.x - targetpos.x > 0 ? 1 : -1;
rigid.AddForce(new Vector2(indic, 2) * 8.4f, ForceMode2D.Impulse);
Invoke("OffDameged", 2.8f);
}
void OnAttack (Transform enemy)
{
//Point
// ReactionForce
rigid.AddForce(Vector2.up * 15.6f, ForceMode2D.Impulse);
// Enemy Die
Enemymove enemyMove = enemy.GetComponent<Enemymove>();
enemyMove.OnDameged();
}
void OffDameged ()
{
gameObject.layer = 8;
Color color = spriteRenderer.color;
color.a = 1;
spriteRenderer.color = color;
}
public void OnDie( )
{
spriteRenderer.flipY = true;
spriteRenderer.color = new Color(1, 1, 1, 0.4f);
capsuleCollider.enabled = false;
rigid.AddForce(Vector2.up * 5, ForceMode2D.Impulse);
}
public void VelocityZero( )
{
rigid.velocity = Vector2.zero;
}
}
스크립트를 봐야할듯?
아하 넵! 스크립트도 가져오겠습니다 !
복잡하다
이동을 fixedupdate에다 구현하고 있내요 잘못복붙하신듯! - dc App
도움 감사드립니다 ㅠ 한번만 더 질문드려도 될까요 ㅠ 혹시 어디에 구현해야 제대로 작동할까요...?
네 한번 저 플립구현하신 바로밑에 붙여보시겟습니까 - dc App
알려주셔서 감사합니다 ㅠㅠ
잘되나용? 왜 그런지는 챗지티피에 한번 물어보세요 - dc App
지금 유니티에 들어갈 수 없어서 이따가 시도해보려고 합니다 ! 넵! 챗지피티에 물어보겠습니다 !! 다시 한번 감사드립니다 !!
해결했습니다 ! 픽스트 업데이트 스크립트를 업데이트로 옮기는 것은 아니었지만 답변주셔서 정말 감사드립니다 !