76 lines
2.3 KiB
Lua
76 lines
2.3 KiB
Lua
---
|
|
--- Created by 谌建军.
|
|
--- DateTime: 2017/12/18 15:19
|
|
---
|
|
local FlyCoin = {}
|
|
|
|
local M = FlyCoin
|
|
|
|
function FlyCoin.new(startPos,endPos,view,coinPre)
|
|
local self = setmetatable({}, {__index = M})
|
|
self.class = "FlyCoin"
|
|
--self.flyObj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_MuShi/coin")
|
|
self.flyObj= UnityEngine.GameObject.Instantiate(coinPre)
|
|
--view:AddChild(self.flyObj)
|
|
self.flyObj.gameObject.transform.parent = view.displayObject.gameObject.transform
|
|
self.flyObj.gameObject.transform.position = startPos--Vector3(50,-50,0)
|
|
self.flyObj.gameObject.transform.localScale = Vector3(50,50,50)
|
|
self.isFly = false
|
|
self.g = -5
|
|
self.hideTime = 1
|
|
self.flySpeed = Vector3.New(5,5,0)
|
|
self.currentTime = 0
|
|
self.gravity = Vector3.New(0,0,0)
|
|
self.SpeedRatio=3
|
|
self:SetParabola(startPos,endPos)
|
|
UpdateBeat:Add(self.OnFlyCoinUpdate,self)
|
|
return self
|
|
end
|
|
|
|
function M:SetParabola(startPos,endPos)
|
|
self.startPos=startPos
|
|
self.endPos=endPos
|
|
self.distance=Vector3.Distance(endPos,startPos)
|
|
self.totalTime=self.distance/self.SpeedRatio
|
|
if self.totalTime>0.6 then
|
|
self.totalTime=0.6
|
|
end
|
|
self.flySpeed=Vector3((self.endPos.x-self.startPos.x)/self.totalTime,(self.endPos.y-self.startPos.y)/self.totalTime-0.5*self.g*self.totalTime,(self.endPos.z-self.startPos.z)/self.totalTime )
|
|
self.currentTime=0
|
|
self.flyObj.gameObject.transform.position=startPos
|
|
self.isFly=true
|
|
end
|
|
|
|
function M:OnFlyCoinUpdate()
|
|
if self.isFly then
|
|
self.currentTime=self.currentTime+Time.deltaTime
|
|
self.gravity.y=self.currentTime*self.g
|
|
|
|
if self.currentTime>self.totalTime and self.currentTime<self.hideTime then
|
|
self.flyObj.gameObject.transform.position=self.endPos
|
|
self.isFly=false
|
|
self.currentTime=0
|
|
coroutine.start(function ()
|
|
coroutine.wait(0.3)
|
|
self:OnDestroy()
|
|
end)
|
|
|
|
elseif self.currentTime>self.hideTime then
|
|
self.isFly=false
|
|
self.currentTime=0
|
|
self:OnDestroy()
|
|
else
|
|
self.flyObj.gameObject.transform.position =self.flyObj.gameObject.transform.position + (self.flySpeed+self.gravity)*Time.deltaTime
|
|
end
|
|
end
|
|
end
|
|
|
|
function M:OnDestroy()
|
|
if self.flyObj~=nil then
|
|
UnityEngine.GameObject.Destroy(self.flyObj.gameObject)
|
|
end
|
|
UpdateBeat:Remove(self.OnFlyCoinUpdate,self)
|
|
end
|
|
|
|
return M
|