private void OnTriggerStay2D(Collider2D collision) { if (collision.gameObject.tag != "Stairs" || playerController.getIsClimbing()) { return; } GameObject stairs = collision.gameObject; StairController stairController = stairs.GetComponentInParent <StairController>(); leftEndStep = stairController.leftEndStep; rightEndStep = stairController.rightEndStep; float climb = Input.GetAxisRaw("Climb"); if ((climb == 1 || climb == -1) && playerController.getPlayerStairState() != PlayerController.STAIR_STATE.on_stair) { platformerController.enabled = false; playerController.setIsClimbing(true); if (platformerController.GetPlayerGrounded()) { fraction = 0; StartCoroutine(MovePlayerToStairs(player, stairController)); } else { StartCoroutine(SnapPlayerToStairs(player, stairController)); } } }
bool CheckIfGameOverMove() { StairController currentStairController = GameManager.self.sceneManager.stairControllers[StepsCounter]; int nextIndex = StepsCounter + 1; if (nextIndex < 0) { return(true); } StairController nextStairController = GameManager.self.sceneManager.stairControllers[nextIndex]; Vector3 diff = nextStairController.transform.position - currentStairController.transform.position; Vector3 projected = Vector3.Project(diff, currentStairController.transform.right); if (projected.magnitude > GameManager.self.sceneManager.stairWidth * 0.66f) { GameOverMove(); return(true); } else { return(false); } }
public void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag != "Stairs" || playerController.getIsClimbing()) { return; } GameObject stairs = collision.gameObject; StairController stairController = stairs.GetComponentInParent <StairController>(); leftEndStep = stairController.leftEndStep; rightEndStep = stairController.rightEndStep; stairDirection = stairController.getStairDirection(); float climb = Input.GetAxisRaw("Climb"); if ((climb == 1 || climb == -1) && playerController.getPlayerStairState() != PlayerController.STAIR_STATE.on_stair) { platformerController.enabled = false; playerController.setIsClimbing(true); //Debug.Log("Control taken from platformer controller"); // move player to base of stairs if grounded if (platformerController.GetPlayerGrounded()) { //Debug.Log("Closest End: " + closestEndStep.name); fraction = 0; StartCoroutine(MovePlayerToStairs(player, stairController)); } else { StartCoroutine(SnapPlayerToStairs(player, stairController)); } } }
IEnumerator StairFollowRoutine(StairController stairController) { while (true) { transform.position = stairController.transform.position + playerPosOffset; yield return(new WaitForFixedUpdate()); } }
// Use this for initialization void Start() { jump = FindObjectOfType <GameController> (); chara = FindObjectOfType <CharacterScript>(); stair = FindObjectOfType <StairController>(); drop = FindObjectOfType <DropManager> (); input = FindObjectOfType <InputManager> (); cheatPanel.SetActive(false); }
public LinkedList <ITimePoint> TimePoints; //storage where we save user move private void Start() { _timeController = FindObjectOfType <TimeController>(); _ordinaryPlayerController = GetComponent <OrdinaryPlayerController>(); _bezierCurvePlayerController = GetComponent <BezierCurvePlayerController>(); _stairController = GetComponent <StairController>(); TimePoints = new LinkedList <ITimePoint>(); _moveObjectController = GetComponent <MoveObjectController>(); }
void FollowStair(StairController stairController) { if (StairFollowRoutineC != null) { StopCoroutine(StairFollowRoutineC); } StairFollowRoutineC = StartCoroutine(StairFollowRoutine(stairController)); }
// Helper Functions GameObject FindClosestEnd(GameObject player, StairController stairController) { float leftDifference = Mathf.Abs(stairController.leftEndStep.transform.position.x - player.transform.position.x); float rightDifference = Mathf.Abs(stairController.rightEndStep.transform.position.x - player.transform.position.x); if (leftDifference < rightDifference) { return(stairController.leftEndStep); } return(stairController.rightEndStep); }
public void AddScore(StairController prevStair_) { prevStair = prevStair_; RawCounter += 1; newScore = RawCounter; Score += newScore; ShowScore(prevStair); }
void ShowScore(StairController prevStair = null) { foreach (Text text in scoretexts) { text.text = Score.ToString(); } if (prevStair != null) { Instantiate(NewScorePrefab); } }
IEnumerator MovePlayerToStairs(GameObject player, StairController stairController) { GameObject closestEndStep = FindClosestEnd(player, stairController); Vector2 posPlayer = new Vector2(player.transform.position.x, closestEndStep.transform.position.y + 1); Vector2 posStep = Vector2.zero; playerController.setIsClimbing(true); if (stairDirection == StairController.STAIR_DIRECTION.Up) { if (closestEndStep.transform.position.x == stairController.leftEndStep.transform.position.x) { FlipSprite(PlayerController.PLAYER_FACING.right); posStep = new Vector2(closestEndStep.transform.position.x + 0.25f, closestEndStep.transform.position.y + 1); } else if (closestEndStep.transform.position.x == stairController.rightEndStep.transform.position.x) { FlipSprite(PlayerController.PLAYER_FACING.left); posStep = new Vector2(closestEndStep.transform.position.x - 0.25f, closestEndStep.transform.position.y + 1); } } else if (stairDirection == StairController.STAIR_DIRECTION.Down) { if (closestEndStep.transform.position.x == stairController.leftEndStep.transform.position.x) { FlipSprite(PlayerController.PLAYER_FACING.right); posStep = new Vector2(closestEndStep.transform.position.x + 0.25f, closestEndStep.transform.position.y + 1); } else if (closestEndStep.transform.position.x == stairController.rightEndStep.transform.position.x) { FlipSprite(PlayerController.PLAYER_FACING.left); posStep = new Vector2(closestEndStep.transform.position.x - 0.25f, closestEndStep.transform.position.y + 1); } } this.enabled = false; while (fraction < 1) { fraction += Time.deltaTime * transitionSpeed * 2; if (fraction > 1) { fraction = 1; } player.transform.position = Vector2.Lerp(posPlayer, posStep, fraction); yield return(new WaitForEndOfFrame()); } animator.Play("PlayerStairsIdle"); platformerController.SetPlayerGrounded(false); playerController.setPlayerStairState(PlayerController.STAIR_STATE.on_stair); this.enabled = true; }
void Start() { ui = FindObjectOfType <TaskUI>(); dropMgr = FindObjectOfType <DropManager> (); character = FindObjectOfType <CharacterScript> (); camCtrl = FindObjectOfType <CameraController> (); stairCtrl = FindObjectOfType <StairController> (); exp = FindObjectOfType <XPController> (); queue = new List <int> (); ResetCam(); smallButton = FindObjectOfType <SmallHelpButton> (); }
IEnumerator MovementFollowRoutine() { stairControllerToFollow = GameManager.self.sceneManager.stairControllers[stairParameters.parentIndex]; stairParameters.movementDistance = stairControllerToFollow.stairParameters.movementDistance; while (true) { MovementT = stairControllerToFollow.MovementT; transform.position = GetMovementFromT(MovementT); yield return(new WaitForFixedUpdate()); } }
void StepCompleted(StairController enteredStairController) { if (enteredStairController.stairParameters.isActive) { FollowStair(enteredStairController); } if (enteredStairController.isLastStair) { GameManager.self.LevelPassed(); } GameManager.self.levelManager.StairCompleted(); GameManager.self.soundManager.StairSound(); GameManager.self.scoreManager.AddScore(GameManager.self.sceneManager.StairEntered(StepsCounter)); }
// Mover functions IEnumerator SnapPlayerToStairs(GameObject player, StairController stairController) { GameObject closestEndStep = FindClosestEnd(player, stairController); Vector2 closestStep = FindClosestStep(player, stairController, closestEndStep); Vector2 posPlayer = new Vector2(player.transform.position.x, closestStep.y); platformerController.SetPlayerVelocity(new Vector2(platformerController.GetPlayerVelocity().x, 0)); playerController.setIsClimbing(true); this.enabled = false; player.transform.position = Vector2.Lerp(posPlayer, closestStep, 1); animator.Play("PlayerStairsIdle"); playerController.setPlayerStairState(PlayerController.STAIR_STATE.on_stair); platformerController.SetPlayerGrounded(false); yield return(new WaitForSeconds(animationDelay)); this.enabled = true; }
void MovePlayerToStairs(StairController stairController, GameObject triggerStep) { isMovingToStairs = true; isMovingOnStairs = false; playerPos = levelManager.playerController.player.transform.position; Vector2 targetPos = triggerStep.GetComponent <Collider2D>().bounds.center; if (stairController.GetStairDirection() == StairController.STAIR_DIRECTION.up) { // a staircase goes up if it moves from left(bottom) to right (top) if (triggerStep.transform.position == stairController.leftEndStep.transform.position) { // this means we're at the left(bottom) end of a staircase that goes up targetPos = DeterminePlayerTarget(triggerStep, 0.25f, 0.5f); } else { // we must be at the right(top) end of a staircase that goes up targetPos = DeterminePlayerTarget(triggerStep, -0.75f, 0.5f); } } else { // a staircase goes down if it moves from left(top) to right(bottom) if (triggerStep.transform.position == stairController.leftEndStep.transform.position) { // this means we're at the left(top) end of a staircase that goes down targetPos = DeterminePlayerTarget(triggerStep, 0.75f, 0.5f); } else { // we must be at the right(top) end of a staircase that goes up targetPos = DeterminePlayerTarget(triggerStep, -0.25f, 0.5f); } } FlipOnStairs(targetPos.x); player.GetComponent <PhysicsObject>().enabled = false; runAfterMoving = RunAfterMovingToStairs; StartCoroutine(MovePlayer(targetPos, transitionSpeed)); }
void OnTriggerStay2D(Collider2D other) { if (other.tag != "Stairs") { return; } stairController = other.GetComponentInParent <StairController>(); if (Input.GetAxis("Climb") != 0 && levelManager.playerController.GetStairState() != PlayerController.STAIR_STATE.on_stair && levelManager.playerController.GetJumpState() == PlayerController.JUMPING.grounded && hasLeftStairTrigger) { stairDirection = stairController.GetStairDirection(); hasLeftStairTrigger = false; player.GetComponent <Rigidbody2D>().gravityScale = 0; levelManager.playerController.SetStairState(PlayerController.STAIR_STATE.on_stair); levelManager.playerController.playerAnimator.SetBool("onStair", true); transitionPercent = 0f; MovePlayerToStairs(stairController, other.gameObject); } }
Vector2 FindClosestStep(GameObject player, StairController stairController, GameObject closestEndStep) { float playerX = player.transform.position.x; playerX = Mathf.Round(playerX * 2f) * 0.5f; float playerY = 0; if (stairDirection == StairController.STAIR_DIRECTION.Up) { if (closestEndStep.transform.position.x > playerX) { //Debug.Log("right is closer"); playerY = closestEndStep.transform.position.y - (closestEndStep.transform.position.x - playerX) + 1.5f; } else { //Debug.Log("left is closer"); playerY = closestEndStep.transform.position.y + (playerX - closestEndStep.transform.position.x) + 1f; } } else if (stairDirection == StairController.STAIR_DIRECTION.Down) { if (closestEndStep.transform.position.x > playerX) { //Debug.Log("right is closer"); //Debug.Log("Initial: " + closestEndStep.transform.position.y); //Debug.Log("+/-: " + (playerX - closestEndStep.transform.position.x)); // not entirely clear why this one needs to be + 0.5f instead of + 1 same issue as right is closer above, likely something to do with my placement of the end points. As long as this is consistent I don't really care. Even if it does secretly bother me. playerY = closestEndStep.transform.position.y + (closestEndStep.transform.position.x - playerX) + 0.5f; } else { //Debug.Log(playerX - closestEndStep.transform.position.x + 1); //Debug.Log(closestEndStep.transform.position.y + 1); //Debug.Log("left is closer"); playerY = closestEndStep.transform.position.y - (playerX - closestEndStep.transform.position.x) + 1f; } } playerX += 0.25f; return(new Vector2(playerX, playerY)); }
// When in prep state, call this function to change the state public void switchToState(ON_STAIR_AREA state_in, Globals.STAIR_FACING Stairfacing_in, GameObject StairTrigger) { prepXcenter = StairTrigger.transform.position.x; Stairfacing = Stairfacing_in; onStairArea = state_in; curStair = StairTrigger.transform.parent.gameObject.GetComponent<StairController>(); curStairSteps = curStair.StairSteps; if (!curStair) { Debug.LogError("STAIR: can't get parent stair controller"); } // get the curStairSteps here // determin curNumOfSteps here if (state_in == ON_STAIR_AREA.PrepDown && onStairState == ON_STAIR_STATE.Not) { curNumOfSteps = curStairSteps; } else if (state_in == ON_STAIR_AREA.PrepUp && onStairState == ON_STAIR_STATE.Not) { curNumOfSteps = 0; } }
void Start() { stairCam = GameObject.Find("StairCamera").GetComponent <Camera> (); bomb = FindObjectOfType <BombController> (); character = FindObjectOfType <CharacterScript> (); charStore = FindObjectOfType <CharacterStorage> (); help = FindObjectOfType <HelpController>(); smHelp = FindObjectOfType <SmallHelpButton> (); stairs = FindObjectOfType <StairController>(); main = FindObjectOfType <GameController>(); exp = FindObjectOfType <XPController> (); FMC_Statistics.newPowerUp += RewardPerformance; types = new PickableItem.Type[drops.Length]; for (int i = 0; i < types.Length; i++) { types [i] = drops [i].GetComponent <PickableItem> ().type; } }
//The base spawn function should be used only by other Spawn overloads public void Spawn(int id, Vector3 position, int at, bool force) { bool isAvalable = CheckAvailable(at); if (isAvalable || force) { if (stairs == null) { stairs = FindObjectOfType <StairController> (); } GameObject go = Instantiate(drops [id], position, drops [id].transform.rotation, stairs.root.transform); if (!isAvalable) { Despawn(at); } DropItem itm = new DropItem(go, at); spawned.Add(itm); itm.item.SetPlace(itm.at); //go.transform.parent = parentStair; } }
IEnumerator MovementRoutine() { Vector3 startPos; Vector3 endPos; float t; float startT; float currentMovementSpeed = maximumMinumumSpeed.y; charController.Moving(); bool continueMovement = true; ControlEnabled = false; yield return(new WaitForSeconds(0.08f)); GameManager.self.soundManager.fixPitch(); GameManager.self.scoreManager.ResetRawCounter(); while (continueMovement) { #if UNITY_IOS if (GameManager.TapticEnabled) { TapticEngine.TriggerLight(); } #endif ControlEnabled = false; StopFollowStair(); if (!CheckIfGameOverMove()) { startPos = transform.position; StepsCounter += 1; endPos = CalculateNewPos(startPos); StairController enteredStairController = GameManager.self.sceneManager.StairEntered(StepsCounter); GameManager.self.sceneManager.StairPassed(StepsCounter - 1); t = 0; startT = Time.time; while (t < 1) { yield return(new WaitForFixedUpdate()); t = (Time.time - startT) / currentMovementSpeed; transform.position = Vector3.Lerp(startPos, endPos, t); transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(enteredStairController.transform.localEulerAngles), t); } transform.position = Vector3.Lerp(startPos, endPos, 1); currentMovementSpeed -= movementAcceleration; if (currentMovementSpeed < maximumMinumumSpeed.x) { currentMovementSpeed = maximumMinumumSpeed.x; } StepCompleted(enteredStairController); ControlEnabled = true; continueMovement = isPointerDown; } else { break; } } }
public override void Initialize(BaseController _stairController) { m_stairController = (StairController)_stairController; base.Initialize(_stairController); SetupLineRenderer(); }
public void InitScene() { currentPatternIndex = 0; currentPatternSpawnedAmount = 0; stairControllers.Clear(); float stairSize = StairPrefab.transform.localScale.z * StairPrefab.GetComponent <BoxCollider>().size.z - 0.1f; stairWidth = stairSize; float pathLenght = splineComputer.CalculateLength(); float P = 0; SplineResult stairResult = splineComputer.Evaluate(0); int i = 0; GameObject obj = Instantiate(StairPrefab); obj.transform.position = stairResult.position; obj.transform.rotation = stairResult.rotation; obj.transform.localEulerAngles = new Vector3(0, obj.transform.localEulerAngles.y, obj.transform.localEulerAngles.z); StairController stairController = obj.GetComponent <StairController>(); stairController.InitStair(i, GameManager.self.colorManager.GetStairColor(i)); stairControllers.Add(stairController); Vector3 currentPos = obj.transform.position; while (P < 1) { P += 0.001f; stairResult = splineComputer.Evaluate(P); float distance = Vector3.Distance(stairResult.position, currentPos); if (distance >= stairSize) { obj = Instantiate(StairPrefab); obj.transform.position = stairResult.position; obj.transform.rotation = stairResult.rotation; obj.transform.localEulerAngles = new Vector3(0, obj.transform.localEulerAngles.y, obj.transform.localEulerAngles.z); currentPos = obj.transform.position; stairController = obj.GetComponent <StairController>(); i += 1; stairController.InitStair(i, GameManager.self.colorManager.GetStairColor(i)); stairControllers.Add(stairController); } } int lastIndex = stairControllers.Count - 1; FinishContainer.position = stairControllers[lastIndex].transform.position; stairControllers[lastIndex].isLastStair = true; StairsAmount = stairControllers.Count; for (int j = 0; j < stairControllers.Count; j++) { stairControllers[j].SetParameters(StairPatterns(j)); stairControllers[j].DoMovement(); } }
void Validate() { DestroyGizmos (); _controller = null; GetComponent<GUIMenuInteraction> ().unConfigure(); GetComponent<GUIMenuInteraction> ().setVisibility (false); Camera.main.GetComponent<ObjInteraction>().configuringObj(null); Camera.main.GetComponent<ObjInteraction>().setSelected(null,false); Camera.main.GetComponent<GuiTextureClip>().enabled = true; enabled = false; }
protected void SetStairController(Transform pool) { _controller = pool.GetComponent<StairController>(); if (_controller != null) { _stairIndex = _controller.GetStairIndex (); _gizmoIndex = _controller.GetGizmoIndex (); if (_controller.GetGizmoList ().Count > 0) { _virtualGizmo = _controller.GetGizmoList (); } //if (_thumbnails == null) SetThumbnails (_controller.GetStairList ()); // if (_stairIndex < 0) // { // _stairModelList.setUiId (_controller.GetStairList ().GetStairList ().Count); // } // else // { _stairModelList.setUiId (_stairIndex); // } } }
// Use this for initialization void Start() { _stairController = GetComponentInParent <StairController>(); }
void Awake() { _controller = transform.gameObject.GetComponent<StairController> (); if (_controller == null) { _controller = transform.gameObject.AddComponent<StairController> (); } if(_uiName != null) { setUI((FunctionUI_OS3D)GameObject.Find("MainScene").GetComponent(_uiName) ); } }