コード例 #1
0
        /// <summary>
        /// Attempt to grab for a pillow. Returns the grabbed pillow, or null
        /// if none was found.
        /// </summary>
        public IPillow AttemptGrab()
        {
            var rayStart = player.Position;
            var rayEnd   = player.Forward * playerSettings.PickupDistance;

            var numHits = Physics.RaycastNonAlloc(
                new Ray(rayStart, rayEnd),
                hitBuffer,
                playerSettings.PickupDistance
                );

            IPillow hit         = null;
            var     hitDistance = float.MaxValue;

            for (var i = 0; i < numHits; i++)
            {
                if (!hitBuffer[i].transform.CompareTag(PillowTag))
                {
                    continue;
                }
                var pillow = hitBuffer[i].transform.GetComponent <IPillow>();
                if (pillow == null)
                {
                    continue;
                }
                var distance = (pillow.Position - player.Position).sqrMagnitude;
                if (distance < hitDistance)
                {
                    hit = pillow;
                }
            }

            return(hit);
        }
コード例 #2
0
ファイル: WalkState.cs プロジェクト: RoryDungan/PillowFought
        public override void Update()
        {
            var pillow = pillowCarrier.AttemptGrab();

            if (prevPillow != null && prevPillow != pillow)
            {
                prevPillow.ToggleButtonPrompt(false);
            }

            if (pillow != null)
            {
                pillow.ToggleButtonPrompt(true);
                prevPillow = pillow;
            }

            if (inputManager.GetGrabButtonDown(player.ControllerIndex))
            {
                // TODO: user factory
                if (pillow != null)
                {
                    player.SetPickupAnim();
                    player.SetState(pillowCarryStateFactory.Create(player, pillow));
                }
            }
        }
コード例 #3
0
 public ThrowState(
     IPlayer player,
     IPillow pillow,
     IInputManager inputManager,
     IPlayerSettings playerSettings,
     PlayerMovement.Factory playerMovementFactory,
     WalkState.Factory walkStateFactory
     )
 {
     this.player           = player;
     this.pillow           = pillow;
     this.inputManager     = inputManager;
     this.playerSettings   = playerSettings;
     this.playerMovement   = playerMovementFactory.Create(player);
     this.walkStateFactory = walkStateFactory;
 }
コード例 #4
0
 public PillowCarryState(
     IPlayer player,
     IPillow pillow,
     PlayerMovement.Factory playerMovementFactory,
     IInputManager inputManager,
     WalkState.Factory walkStateFactory,
     ThrowState.Factory throwStateFactory
     )
 {
     this.player            = player;
     this.pillow            = pillow;
     this.playerMovement    = playerMovementFactory.Create(player);
     this.inputManager      = inputManager;
     this.walkStateFactory  = walkStateFactory;
     this.throwStateFactory = throwStateFactory;
 }