コード例 #1
0
 private void HandleCuriouse(FearActor actor)
 {
     isCuriouse = true;
     isScared   = false;
     UpdateBreakdownAnim(false);
     motorAnimator.SetIdleAnim(curiouseAnim);
     motorAnimator.SetWalkAnim(walkStateName);
 }
コード例 #2
0
 private void HandleScared(FearActor actor)
 {
     isCuriouse = false;
     isScared   = true;
     UpdateBreakdownAnim(true);
     currentBlockAnim = fearBreakDownAnim;
     motorAnimator.SetIdleAnim(fearAnim);
     motorAnimator.SetWalkAnim(runAnim);
 }
コード例 #3
0
    public void Init(
        KinimaticMotorController motorController,
        NodePathController nodePath,
        HauntController hauntController,
        HouseController house,
        FearController fearController,
        BarrierController barrierController,
        ActionLockController actionLockController,
        CameraController cameraController
        )
    {
        this.cameraController        = cameraController;
        this.actionLockController    = actionLockController;
        actionLockController.OnLock += HandleActionLock;
        var body = GetComponent <Rigidbody>();

        pather        = new PathDirectionController(transform, nodePath.GetRoute, finalOffset);
        motor         = motorController.GetMotor(motorConfig, body, pather);
        animator      = modelRoot.GetComponentInChildren <Animator>();
        motorAnimator = new MotorAnimator(pather, animator, walkStateName, idleStateName);
        var hauntResponder = new HauntResponder()
        {
            root = transform
        };

        hauntResponder.onRespond += HandleHaunt;
        hauntController?.AddResponder(hauntResponder);
        this.house = house;
        foreach (var reaction in reactions)
        {
            reactionMap[reaction.haunt] = reaction;
        }

        fearActor = new FearActor()
        {
            house = house, root = transform, maxFear = maxFear
        };
        fearActor.OnScared   += HandleScared;
        fearActor.OnPanic    += HandlePanic;
        fearActor.OnCuriouse += HandleCuriouse;
        fearController?.AddActor(fearActor);

        blockable = new BarrierBlockable()
        {
            root = transform
        };
        blockable.OnBlock   += HandleBlock;
        blockable.OnUnblock += HandleUnblock;
        barrierController?.AddBlockable(blockable);
        currentBlockAnim = breakDownAnim;

        ui.Init(reactions, fearActor, hauntController);
        entrance = house.GetEntrance();
    }
コード例 #4
0
 private void HandlePanic(FearActor actor)
 {
     isCuriouse  = false;
     isScared    = false;
     source.clip = panic;
     source.Play();
     UpdateBreakdownAnim(true);
     isPaniced        = true;
     currentBlockAnim = fearBreakDownAnim;
     motorAnimator.SetIdleAnim(fearAnim);
     motorAnimator.SetWalkAnim(runAnim);
 }
コード例 #5
0
    public void Init(List <HauntReaction> reactions, FearActor actor, HauntController hauntController)
    {
        this.actor     = actor;
        currentPercent = minFearShow;

        Dictionary <FearReaction, IconReactionConfig> reactMap = new Dictionary <FearReaction, IconReactionConfig>();

        foreach (var config in reactionConfigs)
        {
            reactMap[config.reaction] = config;
        }

        List <HauntReaction> displayReactions = new List <HauntReaction>();

        foreach (var item in reactions)
        {
            if (item.reaction == FearReaction.Ignore)
            {
                continue;
            }
            displayReactions.Add(item);
        }

        if (displayReactions.Count == 0)
        {
            return;
        }
        var reactionIncrement = 1.0f / (displayReactions.Count);

        for (var index = 0; index < displayReactions.Count; index++)
        {
            var reaction = displayReactions[index];
            var icon     = GameObject.Instantiate(iconPrefab);
            icon.rectTransform.parent           = iconRow;
            icon.rectTransform.localPosition    = Vector3.zero;
            icon.rectTransform.localScale       = Vector3.one;
            icon.rectTransform.anchorMin        = new Vector2(index * reactionIncrement, 0);
            icon.rectTransform.anchorMax        = new Vector2((index + 1) * reactionIncrement, 1);
            icon.rectTransform.anchoredPosition = Vector2.zero;
            icon.rectTransform.sizeDelta        = Vector2.zero;
            icon.rectTransform.localRotation    = Quaternion.identity;
            icon.rectTransform.pivot            = Vector2.one * .05f;
            icon.sprite = hauntController.GetIcon(reaction.haunt);
            icon.color  = reactMap[reaction.reaction].color;
        }
    }
コード例 #6
0
 public void AddActor(FearActor actor)
 {
     actor.Init(factors);
     actors.Add(actor);
 }