Lerp 연산 (Linear Interpolation)
라고 불리는 연산, 한국어로는 선형 보간이라고 한다.
Unity를 활용한 개발을 할 때는 자체 내장함수가 있어서 사용했엇는데, lua에서 동일한 기능을 구현하려 하다보니 없어서 직접 만들어서 사용했다.
사실 정말 간단한 함수인데, 유니티만 사용했을 때는 어떠한 원리로 동작하는지 모르고 사용했었는데, 간단히 정리하자면
A B 사이에 특정한 비율로 점을 하나 찍는다.
ex) A=0 B=10 비율 = 0.5
1차적으로는
저 가운데에 찍힐 것이고, 저 점을 A로 잡아준다.
두번째로는,
이런식으로 그려질 것이고, 계속 하다보면 A점이 B에 거의 일치가 될 것이다.
단 이 작업은 A와 B는 완전히 같은 값이 되지 않는다!!!!
또한 비율이 크면 클수록 B에 가까워지는 속도가 빨라지며, 비율이 1이 된다면 1차연산만으로 A점과 B점이 동일해진다.
이런 작업을 해주는게 LERP함수고, 이 과정을 통해서 매끄러운 체력바를 만들 수 있게 된다.
단, lua에는 lerp 내장 함수가 없으므로 직접 넣어주고 완성시키면 된다.
void OnUpdate(number delta)
{
if isvalid(self.hpBar) then
self.MPBar.SpriteGUIRendererComponent.FillAmount=self:lerp(self.hpBar.SpriteGUIRendererComponent.FillAmount,self.curHP/self.maxHP,delta)
end
}
number lerp(number a,number b,number speed)
{
return a*(1-speed)+b*speed
}
lua를 배우다보니 유니티에 있는 내장함수들을 직접 구현하게 되는 경우가 있는데, 새로운 경험이고 당연시 여겼던 것들을 이래서 이렇게 되는구나 라고 생각할 수 있는 좋은 계기가 되는것 같네요
'메이플스토리 월드 > 설명' 카테고리의 다른 글
[메이플스토리 월드/LUA] 360도까지 지원가능한 새로운 조이스틱 만들기 (0) | 2022.10.08 |
---|---|
[LUA/메이플스토리 월드] 반사 벡터 만들기,특정 오브젝트에 닿으면 튕기는 오브젝트 만들기 (1) | 2022.10.03 |