Ejemplo n.º 1
0
        private void FindAndApplySurfaceRotation(bool instantRotation = false)
        {
            currentDistance = raycastLength;

            // Forward/Backward
            FindWorldTileSurface(transform.forward);
            FindWorldTileSurface(-transform.forward);

            // Right/Left
            FindWorldTileSurface(transform.right);
            FindWorldTileSurface(-transform.right);

            // Up/Down
            FindWorldTileSurface(transform.up);
            FindWorldTileSurface(-transform.up);

            // If a new world tile surface was found and doesn't have the
            // current rotation, apply the new rotation
            if (newWorldTileSurface != null)
            {
                if (newWorldTileSurface.SurfaceRotation != currentRotation)
                {
                    ApplyRotation(instantRotation);
                }

                newWorldTileSurface = null;
            }
        }
Ejemplo n.º 2
0
        private void FindWorldTileSurface(Vector3 direction)
        {
            Ray ray = new Ray(transform.position, direction);

            RaycastHit hit;

            if (Physics.Raycast(ray, out hit, raycastLength))
            {
                WorldTileSurface worldTileSurface = hit.collider.gameObject.GetComponent <WorldTileSurface>();

                if (worldTileSurface != null)
                {
                    float distance = Vector3.Distance(transform.position, worldTileSurface.transform.position);

                    if (distance < currentDistance)
                    {
                        newWorldTileSurface = worldTileSurface;

                        currentDistance = distance;
                    }
                }
            }

            if (drawDebugLines)
            {
                Debug.DrawLine(ray.origin, ray.origin + (ray.direction * raycastLength), Color.green);
            }
        }
Ejemplo n.º 3
0
        private void OnPlayerInputEvent(object sender, PlayerInputArgs e)
        {
            if (e.inputState == InputState.Down &&
                e.playerInputType == PlayerInputType.SpawnCheat)
            {
                WorldTile worldTile = world.GetRandomSurfacedWorldTile();

                WorldTileSurface worldTileSurface = worldTile.GetRandomWalkablePlane();

                Player player = Instantiate(playerPrefab);

                // TODO: Set different parent, higher up in hierarchy
                player.transform.parent = worldTile.transform.parent;

                player.transform.position = worldTileSurface.transform.position;

                player.Activate();

                Log("Spawned player on coordinate ["
                    + worldTile.Coordinates.x + ", " + worldTile.Coordinates.y + ", " + worldTile.Coordinates.z
                    + "] on the " + worldTileSurface.SurfaceRotation + " side.");
            }
        }