private static void CreatePixelCharacterInstance() { GameObject pixelTileGameObject = new GameObject("Pixel Character"); PixelTile pixelTileComponent = pixelTileGameObject.AddComponent <PixelCharacter>().GetComponent <PixelTile>(); PixelLevel firstPixelLevelFound = GameObject.FindObjectOfType <PixelLevel>(); if (firstPixelLevelFound) { pixelTileComponent.CurrentPixelLevelInstance = firstPixelLevelFound; } }
private void Update() { PixelLevel currentPixelLevelInstance = PixelTileComponent.CurrentPixelLevelInstance; if (!currentPixelLevelInstance) { return; } CurrentPixelLevelInstance = currentPixelLevelInstance; int currentPixelPositionX = PixelPositionX; int currentPixelPositionY = PixelPositionY; if (Input.GetButtonDown("Jump") && ((CollisionNormalFlag & CollisionNormalFlags.GROUND) == CollisionNormalFlags.GROUND)) { isJumping = true; JumpStateTimer = 0.0f; } Vector2 joystickInput = Joystick.GetSmoothInput(0.125f, "Horizontal", "Vertical"); bool isKeyPressed = false; ComputeVelocity(ref isKeyPressed, joystickInput); SetInputSourceFlag(isKeyPressed, joystickInput); Debug.Log(InputSourceFlag); PixelPositionX += Mathf.RoundToInt(VelocityX); PixelPositionY += Mathf.RoundToInt(VelocityY); InitializePixelTileObstacleList(); DetectAndResolveCollisions(); int pixelsPerUnit = currentPixelLevelInstance.PixelsPerUnit; transform.position = Vector3.MoveTowards( new Vector3( ((float)currentPixelPositionX / pixelsPerUnit) + 0.5f * PixelTileComponent.TileSizeX, ((float)currentPixelPositionY / pixelsPerUnit) + 0.5f * PixelTileComponent.TileSizeY ), new Vector3( ((float)PixelPositionX / pixelsPerUnit) + 0.5f * PixelTileComponent.TileSizeX, ((float)PixelPositionY / pixelsPerUnit) + 0.5f * PixelTileComponent.TileSizeY ), Time.deltaTime ); JumpStateTimer += Time.deltaTime; }
protected void Start() { PixelTileComponent = GetComponent <PixelTile>(); PixelLevel currentPixelLevelInstance = PixelTileComponent.CurrentPixelLevelInstance; if (!currentPixelLevelInstance) { return; } CollisionNormalStateMap = new Dictionary <int, CollisionNormalFlags>(); CurrentPixelLevelInstance = currentPixelLevelInstance; PixelTileComponent.AlignToPixelLevelGrid(); int pixelsPerUnit = currentPixelLevelInstance.PixelsPerUnit; PixelPositionX = currentPixelLevelInstance.PixelOriginX + PixelTileComponent.AlignedRelativePositionX * pixelsPerUnit; PixelPositionY = currentPixelLevelInstance.PixelOriginY + PixelTileComponent.AlignedRelativePositionY * pixelsPerUnit; PreviousVelocityX = PixelVelocityX; CollisionNormalFlag = CollisionNormalFlags.NONE; InputSourceFlag = InputSourceFlags.NONE; JumpStateTimer = 0.0f; isJumping = false; }