コード例 #1
0
        public override BehaviourTreeStatus Tick(TimeData time)
        {
            if (!_sensorDataComponent.IsAvatarInRange(SensorType.Visual))
            {
                return(BehaviourTreeStatus.Failure);
            }

            if (AnyObstacleInComfortRange())
            {
                return(BehaviourTreeStatus.Running);
            }

            _timeoutDataComponent.ResetIdleTimeouts();

            var avatarTransform = _sensorDataComponent.Avatar.Get <TransformDataComponent>();

            _blackBoard.MovementTarget.Store(avatarTransform.Position);

            return(BehaviourTreeStatus.Success);
        }
コード例 #2
0
        public override BehaviourTreeStatus Tick(TimeData time)
        {
            if (!_sensorDataComponent.IsAvatarInRange(SensorType.Visual))
            {
                return(BehaviourTreeStatus.Failure);
            }

            // ToDo V2 This should then not move. Works because the following MovementNode just moves to where we are
            if (_sensorDataComponent.IsAvatarInRange(SensorType.Touch))
            {
                _blackBoard.MovementTarget.Store(_transformDataComponent.Position);
                return(BehaviourTreeStatus.Success);
            }

            _timeoutDataComponent.ResetIdleTimeouts();

            var avatarTransform = _sensorDataComponent.Avatar.Get <TransformDataComponent>();

            _blackBoard.MovementTarget.Store(avatarTransform.Position);

            return(BehaviourTreeStatus.Success);
        }