Exemplo n.º 1
0
 /// <summary>
 /// Called to determine if collision should be ignored. Use for one way platforms or z-ordered platforms
 /// like those found in loops.
 /// </summary>
 /// <returns><c>true</c>, if Collision should be ignored, <c>false</c> otherwise.</returns>
 /// <param name="character">Character.</param>
 /// <param name="collider">Collider.</param>
 public override bool IgnoreCollision(Character character, BasicRaycast collider)
 {
     if (character.ZLayer != zLayer) return true;
     return false;
 }
        /// <summary>
        /// Initialise the movement with the given movement data.
        /// </summary>
        /// <param name="character">Character.</param>
        /// <param name="movementData">Movement data.</param>
        public override Movement Init(Character character, MovementVariable[] movementData)
        {
            this.character = character;

            if (movementData != null && movementData.Length == MovementVariableCount)
            {
                RequiredColliders = movementData[RequiredCollidersIndex].IntValue;
                clingGravity = movementData[ClingGravityIndex].FloatValue;
                gravityDelay = movementData[GravityDelayIndex].FloatValue;
                jumpHeight = movementData[JumpHeightIndex].FloatValue;
                ignoreClingAfterJumpTime = movementData[IgnoreClingAfterJumpTimeIndex].FloatValue;
                mustHoldToMaintainCling = movementData[MustHoldToMaintainClingIndex].BoolValue;
                ignoreJumpTime = movementData[IgnoreJumpTimeIndex].FloatValue;
            }
            else
            {
                Debug.LogError("Invalid movement data, not enough values.");
            }

            highestRightCollider = character.Colliders.Where (c=>c.RaycastType == RaycastType.SIDE_RIGHT ).OrderByDescending(c=>c.WorldPosition.y).FirstOrDefault();
            highestLeftCollider  = character.Colliders.Where (c=>c.RaycastType == RaycastType.SIDE_LEFT ).OrderByDescending(c=>c.WorldPosition.y).FirstOrDefault();

            return this;
        }