public void LoadLift(GameObject pShip) { m_goShip = pShip; m_goShip.rigidbody.position = _m_vStartPos; m_goShip.rigidbody.rotation = this.transform.rotation; m_eState = DECKLIFTSTATE.Loading; }
public void LaunchShip() { Ship_Small ship = (Ship_Small)m_goShip.GetComponent("Ship_Small"); ship.m_eSmallShipState = SMALLSHIPSTATE.Launching; m_goShip.renderer.enabled = true; m_eState = DECKLIFTSTATE.Raising; }
// Update is called once per frame void FixedUpdate() { if(m_eState == DECKLIFTSTATE.NotReady) { _m_fTimePassed += Time.fixedDeltaTime; if(_m_fTimePassed >= m_fTimeToReady) { m_eState = DECKLIFTSTATE.Unloaded; _m_fTimePassed = 0; } } else if(m_eState == DECKLIFTSTATE.Loading) { Ship_Small ship = (Ship_Small)m_goShip.GetComponent("Ship_Small"); ship.m_eSmallShipState = SMALLSHIPSTATE.Loading; _m_fTimePassed += Time.fixedDeltaTime; if(_m_fTimePassed >= m_fTimeToLoad) { m_eState = DECKLIFTSTATE.Loaded; ship.m_eSmallShipState = SMALLSHIPSTATE.Loaded; _m_fTimePassed = 0; } } else if(m_eState == DECKLIFTSTATE.Raising) { _m_fTimePassed += Time.fixedDeltaTime; m_goShip.rigidbody.position = Vector3.Lerp(_m_vStartPos, this.transform.position, _m_fTimePassed/2); if(_m_fTimePassed >= m_fTimeToRaiseLower) { m_eState = DECKLIFTSTATE.Raised; _m_fTimePassed = 0; } } else if(m_eState == DECKLIFTSTATE.Raised) { Launching(); } else if(m_eState == DECKLIFTSTATE.Lowering) { _m_fTimePassed += Time.fixedDeltaTime; if(_m_fTimePassed >= m_fTimeToRaiseLower) { m_eState = DECKLIFTSTATE.NotReady; _m_fTimePassed = 0; } } }
public void Launching() { float distance = Vector3.Distance(this.transform.position, m_goShip.rigidbody.position); Ship_Small ship = (Ship_Small)m_goShip.GetComponent("Ship_Small"); if(distance > 5) { ship.m_eSmallShipState = SMALLSHIPSTATE.Flying; m_eState = DECKLIFTSTATE.Lowering; m_goShip = null; } else { m_goShip.rigidbody.velocity -= ((transform.forward * (0.1f * ship.m_fMaxThrust)) / m_goShip.rigidbody.mass) * Time.fixedDeltaTime; m_goShip.rigidbody.velocity += ((transform.up * (0.1f * ship.m_fMaxThrust)) / m_goShip.rigidbody.mass) * Time.fixedDeltaTime; } }
// Use this for initialization void Start() { m_goLandingStrip = (GameObject)GameObject.Instantiate(m_goLandingStripPrefab); m_goLandingStrip.transform.parent = this.transform; m_goLandingStrip.transform.localPosition = new Vector3(0, 0, 12); m_eState = DECKLIFTSTATE.NotReady; float yAdjust = 0; if(this.transform.localPosition.y > 0) { yAdjust = -1.0f; } else { yAdjust = 1.0f; } _m_vStartPos = this.transform.position + new Vector3(0, yAdjust, 0); }