채팅0

    플라이듀프 좌표 수정할줄아시는 고수분 계십니까

    조회수 431

    local hitByLeft = false

    local knockbackType = 1

    local kb = mob.MobKnockbackComponent

    local ai = mob.MobAIComponent

    local rb = mob.MobRigidbodyComponent

    local map = mob.CurrentMap
    local boundLt, boundRb = map.MapComponent:GetBound()
    local minX = boundLt.x + 0.1
    local maxX = boundRb.x - 0.1
    local mobPos = mob.TransformComponent.WorldPosition:ToVector2()
    local sqrt = math.sqrt
    
    local elapse = 0
    local knockbackMoveEnd
    local interruptedEnd
    if (knockbackType == 2) then 
    	knockbackMoveEnd = 0.5	
    	interruptedEnd = 0.7 
    else 
    	knockbackMoveEnd = 0.1
    	interruptedEnd = 0.5
    end
    
    local timelines = {}
    local timelineIndex = 0
    local currentX = mobPos.x
    local currentY = mobPos.y
    
    local function makeDistance(x1, y1, x2, y2)
    	return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))
    end
    
    kb:SetShoeAttr(knockbackType)
    local knockbackSpeed = rb.WalkSpeed * _Physics.FlySpeed / 1
    
    ---@param destX number
    ---@param destY number
    ---@param floating boolean
    ---@return number
    local function makeFlyCommand(cmd, destX, destY, floating)
    	local distance = makeDistance(currentX, currentY, destX, destY) 
    	currentX = destX
    	currentY = destY
    	local duration = distance / knockbackSpeed
    	timelines[timelineIndex + 1] = {cmd, {destX, destY, duration, floating}, 0}
    	timelineIndex += 1
    	return duration
    end
    local function makeCommand(cmd, value, nextTime)
    	timelines[timelineIndex + 1] = {cmd, value, nextTime}
    	timelineIndex += 1
    end
    
    local inputX = 1
    if (hitByLeft) then
    	inputX = -1
    end
    
    -- makeCommand(_MobActionPartType.HitMotion, 1, 0)
    
    local knockbackDestX = mobPos.x
    local delta = knockbackSpeed * knockbackMoveEnd
    if (inputX < 0) then
    	knockbackDestX = math.max(minX, mobPos.x - delta)
    else
    	knockbackDestX = math.min(maxX, _UserService.LocalPlayer.TransformComponent.WorldPosition.x + 0.8)
    end
    
    if (mobPos.x ~= knockbackDestX) then
    	mobPos.y += 0.02
    	-- makeCommand(_MobActionPartType.KnockbackPos, mobPos, 0)
    	makeFlyCommand(_MobActionPartType.KnockbackFly, knockbackDestX, _UserService.LocalPlayer.TransformComponent.WorldPosition.y , false)
    end
    
    -- makeCommand(_MobActionPartType.HitMotion, 0, interruptedEnd)
    
    if (timelineIndex > 0) then
    	map.LifeControllerComponent:RequestControl(mob, timelines, timelineIndex, true)
    end

    end

    댓글5

    회원프로필

    뭐 원하는 위치가 어딘데?

    2024.02.02 22:57
    회원프로필

    지금 캐릭 오른쪽 위 인데 아예 머리 위로 바꾸고싶어서

    2024.02.02 22:58
    회원프로필

    y축건들면되는거아님?

    2024.02.02 23:08
    회원프로필

    x,y 다 건들어야하는데 어딘지 모르겠어 코드 자체가

    2024.02.02 23:09
    회원프로필

    0.8 x축지우고 y0.02 고침대는거아녀?

    2024.02.02 23:58

      게시글 리스트
      제목작성자작성일조회
      공지10-2022115
      6167015:1332
      6166912:2257
      6166812:0374
      6166711-11181
      6166611-11200
      6166511-11208
      6166411-11334
      6166311-11261
      6166211-11390
      6166111-10333
      6166011-10349
      6165911-10339
      6165811-10380
      6165711-10496
      6165611-10484
      6165511-09543
      6165411-09507
      6165311-09541
      6165211-09595
      안내 배너 이미지