예제 #1
0
 public static IEnumerator PatrolUntilSight(DefaultMovement movement, PatrolParameters parameters, Sight sight)
 {
     return(AsyncUtil.Race(new IEnumerator[] {
         PatrolForever(movement, parameters),
         AsyncUtil.WaitUntil(() => sight.GetVisibleObject() != null),
     }));
 }
예제 #2
0
 public static IEnumerator LineUp(Transform target, Transform from, DefaultMovement movement, Sight sight, float targetOffset, float moveSpeed)
 {
     do
     {
         movement.TargetVelocity = TargetVelocity(target, from, movement, targetOffset) * moveSpeed;
         yield return(null);
     }while (sight.canSeeObject(target.gameObject) && (movement.TargetVelocity != Vector2.zero || movement.Velocity != Vector2.zero));
 }
예제 #3
0
 // Start is called before the first frame update
 void Start()
 {
     _controller     = GetComponent <CharacterController>();
     _controls       = MainMenuManager.Instance.Controls;
     _movementAction = _controls.Movement.MoveDirection;
     _controls.Interactions.Activate.performed += Activate_performed;
     _controls.Interactions.Detach.performed   += Detach_performed;
     SetCartState(false);
 }
예제 #4
0
    private void Start()
    {
        InputActionMap UIActionMap    = UIAsset.FindActionMap(inputUIMapName);
        UIInputHandler uIInputHandler = new UIInputHandler(UIActionMap);

        InputActionMap         PlayerMovementMap          = PlayerAsset.FindActionMap(inputPlayerMovementMapName);
        TestPlayerInputManager playerMovementInputHandler = new TestPlayerInputManager(PlayerMovementMap);

        defaultMovement = new DefaultMovement(rigidbodyToMove);
    }
예제 #5
0
    private IEnumerator Start()
    {
        Controls = new DefaultMovement();
        Controls.Enable();
        yield return(new WaitForSeconds(1f));

        LoadNewScene(MainMenuScene);
        Transition.Instance.SetState(false);
        MusicPlayer.Instance.Play();
    }
예제 #6
0
    public static IEnumerator PatrolSegment(DefaultMovement movement, Vector2 direction, PatrolParameters parameters)
    {
        movement.TargetVelocity = direction * parameters.patrolSpeed;

        float moveTime = parameters.moveDistance.GenerateValue() / parameters.patrolSpeed;

        yield return(AsyncUtil.Pause(moveTime));

        movement.TargetVelocity = Vector2.zero;

        yield return(AsyncUtil.Pause(parameters.pauseTime.GenerateValue()));
    }
    public void LookAt(string objectName, float x, float y)
    {
        var toLook = GetNamedObject(objectName);

        if (toLook != null)
        {
            DefaultMovement movement = toLook.GetComponent <DefaultMovement>();

            if (movement != null)
            {
                Vector3 direction = new Vector3(x, y, 0.0f) - toLook.transform.position;
                movement.SetDirection(direction);
            }
        }
    }
예제 #8
0
    public static Vector2 TargetVelocity(Transform target, Transform from, DefaultMovement movement, float targetOffset)
    {
        Vector2 offset = target.transform.position - from.position;

        Vector2 moveDirection = (Mathf.Abs(offset.x) > Mathf.Abs(offset.y)) ?
                                new Vector2(0.0f, Mathf.Sign(offset.y)) :
                                new Vector2(Mathf.Sign(offset.x), 0.0f);

        movement.SetDirection(offset);

        if (Vector2.Dot(moveDirection, offset) < targetOffset)
        {
            return(Vector2.zero);
        }
        else
        {
            return(moveDirection);
        }
    }
예제 #9
0
    public static IEnumerator PatrolForever(DefaultMovement movement, PatrolParameters parameters)
    {
        Vector2 direction = Vector2.right;

        while (true)
        {
            if (parameters.leftProbability.GenerateValue())
            {
                direction = new Vector2(direction.y, -direction.x);
            }
            else if (parameters.rightProbability.GenerateValue())
            {
                direction = new Vector2(-direction.y, direction.x);
            }
            else
            {
                direction = -direction;
            }

            yield return(PatrolSegment(movement, direction, parameters));
        }
    }
예제 #10
0
 void Start()
 {
     movement = GetComponent <DefaultMovement>();
 }