Esempio n. 1
0
    /// <summary>
    /// Called on the frame when this <see cref="MonoBehaviour"/> is enabled,
    /// before any of the Update methods are called.
    /// </summary>
    private void Start()
    {
        characterController = GetComponent <CharacterController>();
        movementType        = GameSettings.PlayerMovementType;

        Instance = this;
    }
Esempio n. 2
0
 private void StartFalling()
 {
     if (is_falling == false)
     {
         fall.StartFalling((last_movement_speed + extra_movement_speed) * speed_boost);
         ResetMovements(rotate.GetOnIce(), true, false);
         current_movement_type = PlayerMovementType.None;
         is_falling            = true;
     }
 }
Esempio n. 3
0
    private void Start()
    {
        movementType       = PlayerMovementType.Stationary;
        lastMovementType   = PlayerMovementType.Stationary;
        lowProfileMovement = true;
        movementDirection  = Vector3.zero;
        movementTimer      = 0;

        direction = (int)DirectionState.DOWN;
        canMove   = true;

        MessageCenter.Instance.RegisterListener(MessageType.AbilityStatusChanged, HandleAbilityStatusChanged);
        MessageCenter.Instance.RegisterListener(MessageType.PauseChanged, HandlePauseChanged);

        // Temp
        state       = State.Normal;
        npcsInRange = new List <GameObject>();

        xScale = transform.localScale.x;
    }
Esempio n. 4
0
    private void Start()
    {
        movementType = PlayerMovementType.Stationary;
        lastMovementType = PlayerMovementType.Stationary;
        lowProfileMovement = true;
        movementDirection = Vector3.zero;
        movementTimer = 0;

		direction = (int)DirectionState.DOWN;
		canMove = true;

		MessageCenter.Instance.RegisterListener (MessageType.AbilityStatusChanged, HandleAbilityStatusChanged);
		MessageCenter.Instance.RegisterListener (MessageType.PauseChanged, HandlePauseChanged);

        // Temp
        state = State.Normal;
        npcsInRange = new List<GameObject>();

        xScale = transform.localScale.x;
    }
Esempio n. 5
0
 private void CheckPlatformType(Transform platform)
 {
     if ((platform.tag == "Snow") && (current_movement_type != PlayerMovementType.Snow))
     {
         current_movement_type = PlayerMovementType.Snow;
         last_movement_speed   = movement_speed;
         extra_movement_speed  = 0;
         ResetMovements(false, true, true);
         animations.SetAnimation(PlayerAnimations.Stand);
     }
     else if ((platform.tag == "Ice") && (current_movement_type != PlayerMovementType.Ice))
     {
         current_movement_type = PlayerMovementType.Ice;
         last_movement_speed   = ice_movement_speed;
         ResetMovements(true, false, true);
         animations.SetAnimation(PlayerAnimations.Ice);
     }
     else if ((platform.tag == "Reverse") && (current_movement_type != PlayerMovementType.Reverse))
     {
         current_movement_type = PlayerMovementType.Reverse;
         last_movement_speed   = ice_movement_speed;
         ResetMovements(true, false, true);
         animations.SetAnimation(PlayerAnimations.Ice);
     }
     else if ((platform.tag == "Straight") && (current_movement_type != PlayerMovementType.Straight))
     {
         current_movement_type = PlayerMovementType.Straight;
         last_movement_speed   = ice_movement_speed;
         ResetMovements(true, false, true);
         animations.SetAnimation(PlayerAnimations.Ice);
     }
     else if (platform.tag == "Water")
     {
         current_movement_type = PlayerMovementType.None;
         extra_movement_speed  = 0;
         ResetMovements(false, true, true);
         respawner.KillPlayer(gameObject, PlayerAnimations.Stand, false);
         SpawnPool general_pool = PoolManager.Pools[CurrentLevel.GetGeneralPoolName()];
         general_pool.Spawn(water_effect, transform.position, new Quaternion(90, 0, 0, 0));
     }
 }
Esempio n. 6
0
    /// <summary>
    /// Called every frame.
    /// </summary>
    private void Update()
    {
        // If our settings have changed, let's update our player data.
        if (GameSettings.PlayerMovementType != movementType)
        {
            movementType = GameSettings.PlayerMovementType;
        }

        DPadInput.Update();

        if (isCarryingObject && objectBeingCarried != null)
        {
            Vector3 carryDestination = GetCarryObjectDestination();
            objectBeingCarried.transform.position = Vector3.Lerp(objectBeingCarried.transform.position, carryDestination, Time.deltaTime * pickupMovementSmoothening);

            float rightJoystickHorizontalAxis = Input.GetAxis("RightJoystickHorizontal");
            objectBeingCarried.transform.Rotate(Vector3.up * pickupRotationSpeed * Time.deltaTime * -rightJoystickHorizontalAxis, Space.World);

            // If we aren't pressing the pickup key, let's bail!
            // If we are pressing it at this point, we want to drop the item that we are holding.
            if (!DPadInput.Down)
            {
                return;
            }

            isCarryingObject = false;

            Rigidbody objectBeingCarriedRigidbody = objectBeingCarried.GetComponent <Rigidbody>();
            objectBeingCarriedRigidbody.isKinematic = false;
            objectBeingCarriedRigidbody.velocity    = vrCamera.transform.forward * objectDropThrowVelocity;

            // Reset the colour of the material just in case it was changed anywhere else.
            objectBeingCarried.GetComponent <MeshRenderer>().material.color = Color.white;

            objectBeingCarried = null;
        }
        else
        {
            // We only want to pickup an item when we press up on the Dpad. When it is NOT down,
            // let's bail out of this method.
            if (!DPadInput.Up)
            {
                return;
            }

            RaycastHit hit;
            if (!Physics.Raycast(vrCamera.transform.position, vrCamera.transform.forward, out hit))
            {
                return;
            }

            // If the object we hit has no rigidbody or isn't on the pickup layer then there is nothing to do.
            if (hit.collider.attachedRigidbody == null ||
                hit.transform.gameObject.layer != LayerMask.NameToLayer("Pickup"))
            {
                return;
            }

            // If the object we hit is out of range let's not pick it up.
            float distanceFromHit = Vector3.Distance(transform.position, hit.point);
            if (distanceFromHit > pickupRadius)
            {
                return;
            }

            isCarryingObject   = true;
            objectBeingCarried = hit.transform.gameObject;
            hit.collider.attachedRigidbody.isKinematic = true;
        }
    }
Esempio n. 7
0
    private void UpdateMovement()
    {
        if (Input.anyKey)
        {
            keyboardControl = true;
        }

        if (Input.GetAxis("LSX") != 0 || Input.GetAxis("LSY") != 0)
        {
            keyboardControl = false;
        }

        Vector2 velocity = Vector2.zero;

        if (keyboardControl)
        {
            // Keyboard support :(
            if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.RightArrow))
            {
                velocity.x = (Input.GetKey(KeyCode.LeftArrow)) ? -1f : 1f;
            }
            if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.DownArrow))
            {
                velocity.y = (Input.GetKey(KeyCode.UpArrow)) ? 1f : -1f;
            }
        }
        else
        {
            velocity = new Vector2(Input.GetAxis("LSX"), Input.GetAxis("LSY"));
        }

        float   speed = (lowProfileMovement) ? MaxLowProfileSpeed : MaxHighProfileSpeed;
        Vector2 zero  = Vector2.zero;

        velocity = velocity * speed * Time.deltaTime;

        if (velocity.magnitude <= 0.01f)
        {
            velocity = zero;
        }

        // update the DirectionState
        direction = updateState(Input.GetAxis("LSX"), Input.GetAxis("LSY"));

        // Update movement type
        if (velocity == zero)
        {
            movementType = PlayerMovementType.Stationary;
        }
        else
        {
            movementType = (lowProfileMovement) ? PlayerMovementType.LowProfile : PlayerMovementType.HighProfile;
        }

        // Handle dashing
        if (velocity != zero)
        {
            /*if(Input.GetButtonDown("Y") && movementTimer <= 0f)
             * {
             *  movementDirection = velocity.normalized * 30f;
             *  movementTimer = 0.2f;
             * }*/
        }

        if (movementTimer > 0f)
        {
            rigidbody2D.velocity = movementDirection;
            movementType         = PlayerMovementType.VeryHighProfile;

            movementTimer -= Time.deltaTime;
        }
        else
        {
            rigidbody2D.velocity = velocity;
        }

        if (velocity.x < 0f)
        {
            transform.localScale = new Vector3(-xScale, transform.localScale.y, transform.localScale.z);
        }
        else if (velocity.x > 0f)
        {
            transform.localScale = new Vector3(xScale, transform.localScale.y, transform.localScale.z);
        }

        if (movementType != lastMovementType)
        {
            MessageCenter.Instance.Broadcast(new PlayerMovementTypeChangedMessage(movementType));
        }

        if (Input.GetButtonDown("Back"))
        {
            lowProfileMovement = !lowProfileMovement;
        }

        // Temp
        if (Input.GetAxis("LT") > 0.2f && npcsInRange.Count > 0)
        {
            PlayerGrabbedNPCsMessage message = new PlayerGrabbedNPCsMessage(npcsInRange);

            foreach (GameObject npc in npcsInRange)
            {
                Vector3 offset = new Vector3(Random.Range(-0.5f, 0.5f), Random.Range(-0.5f, 0.5f));
                npc.transform.position = transform.position + offset;
            }

            MessageCenter.Instance.Broadcast(message);

            //MessageCenter.Instance.Broadcast(new CameraZoomInMessage());

            state = State.Eating;

            percentage = 0.5f;
            qteButton  = Random.Range(0, 3);

            rigidbody2D.velocity = Vector2.zero;
        }
    }
 public PlayerMovementTypeChangedMessage(PlayerMovementType type) : base(MessageType.PlayerMovementTypeChanged)
 {
     NewMovementType = type;
 }
Esempio n. 9
0
    private void UpdateMovement()
    {
        if (Input.anyKey) keyboardControl = true;

		if( Input.GetAxis("LSX") != 0 || Input.GetAxis("LSY") != 0 ) keyboardControl = false;

        Vector2 velocity = Vector2.zero;

        if (keyboardControl)
        {

            // Keyboard support :(
            if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.RightArrow)) velocity.x = (Input.GetKey(KeyCode.LeftArrow)) ? -1f : 1f;
            if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.DownArrow)) velocity.y = (Input.GetKey(KeyCode.UpArrow)) ? 1f : -1f;
        }
        else velocity = new Vector2(Input.GetAxis("LSX"), Input.GetAxis("LSY"));

        float speed = (lowProfileMovement) ? MaxLowProfileSpeed : MaxHighProfileSpeed;
        Vector2 zero = Vector2.zero;

        velocity = velocity * speed * Time.deltaTime;

        if (velocity.magnitude <= 0.01f) velocity = zero;

		// update the DirectionState
		direction = updateState (Input.GetAxis ("LSX"), Input.GetAxis ("LSY"));

        // Update movement type
        if (velocity == zero) movementType = PlayerMovementType.Stationary;
        else movementType = (lowProfileMovement) ? PlayerMovementType.LowProfile : PlayerMovementType.HighProfile;

        // Handle dashing
        if(velocity != zero)
        {
            /*if(Input.GetButtonDown("Y") && movementTimer <= 0f)
            {
                movementDirection = velocity.normalized * 30f;
                movementTimer = 0.2f;
            }*/
        }

        if(movementTimer > 0f)
        {
            rigidbody2D.velocity = movementDirection;
            movementType = PlayerMovementType.VeryHighProfile;

            movementTimer -= Time.deltaTime;
        }
        else rigidbody2D.velocity = velocity;

        if (velocity.x < 0f) transform.localScale = new Vector3(-xScale, transform.localScale.y, transform.localScale.z);
        else if (velocity.x > 0f) transform.localScale = new Vector3(xScale, transform.localScale.y, transform.localScale.z);

        if (movementType != lastMovementType) MessageCenter.Instance.Broadcast(new PlayerMovementTypeChangedMessage(movementType));

        if (Input.GetButtonDown("Back")) lowProfileMovement = !lowProfileMovement;

        // Temp
        if(Input.GetAxis("LT") > 0.2f && npcsInRange.Count > 0)
        {
            PlayerGrabbedNPCsMessage message = new PlayerGrabbedNPCsMessage(npcsInRange);

            foreach (GameObject npc in npcsInRange)
            {
                Vector3 offset = new Vector3(Random.Range(-0.5f, 0.5f), Random.Range(-0.5f, 0.5f));
                npc.transform.position = transform.position + offset;
            }

            MessageCenter.Instance.Broadcast(message);

            //MessageCenter.Instance.Broadcast(new CameraZoomInMessage());

            state = State.Eating;

            percentage = 0.5f;
            qteButton = Random.Range(0, 3);

            rigidbody2D.velocity = Vector2.zero;
        }
    }