public void MoveToCube(float direction) { if (PlayerController.Moving) { return; } CubeAbstract cube = null; if (ActiveCube.Row < Mountain.Konfigurācija.Rindas - 1) { cube = direction > 0 ? ActiveCube.Right : ActiveCube.Left; } if(ActiveCube.Row == Mountain.Konfigurācija.Rindas - 1) { cube = direction > 0 ? ActiveCube.RightToPlain : ActiveCube.LeftToPlain; } if (cube != null && cube.CanMoveTo()) { ActiveCube = cube; Player.MoveToDirection(cube); } }
/// <summary> /// Changer takes target place and destroys it /// </summary> public void Replace(CubeAbstract changer, CubeAbstract target) { Content[target.Row][target.Index] = changer; changer.transform.position = target.transform.position; changer.transform.parent = target.transform.parent; changer.Row = target.Row; changer.Index = target.Index; GameObject.Destroy(target.gameObject); }
// Use this for initialization void Start() { Mountain = GameObject.FindGameObjectWithTag("Mountain").GetComponent<Mountain>(); ActiveCube = GetStartCube(); Player.transform.position = ActiveCube.transform.position + new Vector3(0f, 1f, 0f); }
/// <summary> /// Converts cube into lava /// </summary> void Consume(CubeAbstract cube) { Mountain.Replace(Instantiate(Mountain.Prefabs.Lava), cube); }
public void MoveToDirection(CubeAbstract cube) { if (!Live) { return; } _cube = cube; StartCoroutine(MoveChar(cube)); }
IEnumerator MoveChar( CubeAbstract cube) { if (Moving) { yield break; } if(cube is GrassCube && ((GrassCube)cube).Item != null) { PlaySound(0); } Moving = true; GirlAnimation.Play("Jump"); GirlTransform.LookAt(new Vector3(cube.transform.position.x, GirlTransform.position.y, cube.transform.position.z)); GirlTransform.Rotate(0, -180, 0); Vector3 angles = GirlTransform.localEulerAngles; if (angles.y > 200) { GirlTransform.Rotate(0, -30, 0); } else { GirlTransform.Rotate(0, 30, 0); } Vector3 startPos = transform.position; Vector3 endPos = new Vector3(cube.transform.position.x,startPos.y + 0.3f, cube.transform.position.z) - new Vector3(0f, 0, 0f); float dTime = 0.5f; float tmp = 0; while (tmp < dTime) { transform.position = Vector3.Lerp(startPos, endPos, tmp / dTime); tmp += Time.smoothDeltaTime; yield return null; } }