ehdrhelr / baseball

그룹프로젝트 #3
0 stars 1 forks source link

[iOS] home에 player 처음 생성 시 위치가 다른 버그 #22

Closed eeeesong closed 3 years ago

eeeesong commented 3 years ago

버그 내용

full animation

ezgif-4-7df92f5a9c2c

before

스크린샷 2021-05-11 오후 5 15 00

after

스크린샷 2021-05-11 오후 5 14 02


예상 이유

  1. PlayerLayer 초기화 이후 너비가 달라졌다 -> 너비가 같게 나온다
  2. ....모르겠음 (과부화 돼서 떠오르지 않음)

만약 찾지 못할 경우 위치를 두번 설정해주면 되긴 하지만... 그러나 맑은 정신일 때 다시 보고 찾아보겠습니다!

eeeesong commented 3 years ago

우선 위치가 맞도록 맞춰놓긴 했는데 이 부분에 시간을 더 투자하는 게 적절하지 않을 것 같아서 우선 넘어가는 것이 나을 것 같습니다!

eeeesong commented 3 years ago

ezgif-7-fd2c592fa4d5

eeeesong commented 3 years ago

현재 코드

BaseDrawingProperty

    struct BaseDrawingProperty {
        let id: Int
        let origin: CGPoint
        let size: CGSize

        func centerMovedBy(x: CGFloat, y: CGFloat) -> CGPoint {
            let newX = origin.x + x + size.width / 2
            let newY = origin.y + y - size.height / 2
            return CGPoint(x: newX, y: newY)
        }
    }

Player 초기 설정

private func addPlayer(to baseInfo: BaseDrawingProperty) {

        let playerWidth = width * 0.06
        let playerHeight = playerWidth * 1.5
        let playerSize = CGSize(width: playerWidth, height: playerHeight)

        let offsetX = playerWidth / 2 
        let playerOrigin = baseInfo.centerMovedBy(x: -offsetX, y: 0)
        //(이하 생략)

애니메이션 부분

private func animatePlayer(with fromBaseInfo: BaseDrawingProperty,_ toBaseInfo: BaseDrawingProperty, duration: Double, delay: Double) {

        let offsetY = player.frame.height / 2
        let fromPosition = fromBaseInfo.centerMovedBy(x: 0, y: offsetY)
        let toPosition = toBaseInfo.centerMovedBy(x: 0, y: offsetY)
        //(이하 생략)