示例#1
0
    // Update is called once per frame
    void Update()
    {
        if (!sentient.Alive())
        {
            //dont try this at home
            playerHUD.DeathNotice(sentient);
            return;
        }

        if (Input.GetKey(KeyCode.W))
        {
            movement.RegisterAction(Movement.MovementType.Forward);
        }
        else if (Input.GetKey(KeyCode.S))
        {
            movement.RegisterAction(Movement.MovementType.Backward);
        }
        else if (Input.GetKey(KeyCode.D))
        {
            movement.RegisterAction(Movement.MovementType.Left);
        }
        else if (Input.GetKey(KeyCode.A))
        {
            movement.RegisterAction(Movement.MovementType.Right);
        }

        if (Input.GetKeyDown(KeyCode.E))
        {
            sentient.Interact();
        }


        playerHUD.UpdateScores(sentient);
    }
 private void FixedUpdate()
 {
     if (sentient != null && sentient.InInteractionRange)
     {
         sentient.Interact();
         return;
     }
     if (movement.CanReceiveInput)
     {
         var seenInteractions = vision?.AllInVision;
         if (canAssignPriorities)
         {
             var priorities = priorityEvaluator?.GetTargetPriorities();
             if (priorities != null)
             {
                 (selectedMovementStrat as IAwareMover).SetPriorities(priorities);
             }
             else
             {
                 //UnityEngine.Debug.LogError($"Assigned smart priorities Strategies move selector, but sentient object has no way to get priorities on {name}");
             }
         }
         if (selectedMovementStrat.GetNextMovement(seenInteractions, transform.position, out var move, out var vec))
         {
             moveDirection = vec;
             movement.RegisterAction(move);
         }
     }
 }