Beispiel #1
0
 void Update()
 {
     if (state == DetectorState.Started)
     {
         // If eyes are OPEN
         Debug.Log(TobiiAPI.GetGazePoint().IsRecent(0.1f));
         Debug.Log("eyestate: " + Enum.GetName(typeof(EyeState), eyeState));
         if (TobiiAPI.GetGazePoint().IsRecent(0.1f))
         {
             if (eyeState == EyeState.EyesClosed || eyeState == EyeState.Unintialized)
             {
                 eyeState = EyeState.EyesOpen;
                 LogEyeOpen();
                 blinkNo++;
                 InputData inputData = new InputData();
                 inputData.validity    = InputValidity.Accepted;
                 inputData.type        = InputType.BlinkDetection;
                 inputData.confidence  = 1f;
                 inputData.inputNumber = blinkNo;
                 onBlink.Invoke(inputData);
             }
             duration = 0f;
         }
         else
         {
             if (eyeState == EyeState.EyesOpen || eyeState == EyeState.Unintialized)
             {
                 eyeState  = EyeState.EyesClosed;
                 timestamp = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff");
                 LogEyeClose();
             }
             duration += Time.deltaTime;
         }
     }
 }
 private void OnEyeStateChanged(EyeState state)
 {
     if (state >= EyeState.Observatory)
     {
         SetButtonActive(HostButton, false);
     }
 }
Beispiel #3
0
    private void SetEyeState(EyeState eyeState)
    {
        if (eyeState == _eyeState)
        {
            return;
        }

        switch (eyeState)
        {
        case EyeState.Idle:
            break;

        case EyeState.LeftWink:
            OnWink(EyeIndex.LEFT);
            break;

        case EyeState.RightWink:
            OnWink(EyeIndex.RIGHT);
            break;

        case EyeState.Blink:
            OnNaturalBlink();
            break;

        default:
            throw new ArgumentOutOfRangeException(nameof(eyeState), eyeState, null);
        }

        _eyeState = eyeState;
    }
        /// <summary>
        /// Update the animation.
        /// </summary>
        /// <param name="deltaTime">Delta time</param>
        public void Update(float deltaTime)
        {
            _timer += deltaTime;
            var frame       = 0;
            var newCooldown = _cooldownPeriod;

            if (_timer > _currentCooldown)
            {
                _timer = _timer - _currentCooldown;
                _state = _state == EyeState.Open ? EyeState.Closed : EyeState.Open;
            }

            if (_state == EyeState.Open)
            {
                frame       = 1;
                newCooldown = _flashPeriod;
            }

            _currentCooldown = newCooldown;

            foreach (var goal in _goals.Goals)
            {
                goal.Frame = frame;
            }
        }
Beispiel #5
0
    public void SwitchState(EyeState newState)
    {
        switch (newState)
        {
        case EyeState.OPEN:
            coll.enabled         = true;
            closedSprite.enabled = false;
            deadSprite.enabled   = false;
            spreadtime           = 0.0f;
            break;

        case EyeState.CLOSED:
            coll.enabled         = false;
            closedSprite.enabled = true;
            deadSprite.enabled   = false;
            break;

        case EyeState.DEAD:
            coll.enabled         = false;
            closedSprite.enabled = false;
            deadSprite.enabled   = true;
            audioController.PlaySingle(deathSound, 0.7f);
            break;

        default:
            break;
        }
        state = newState;
    }
Beispiel #6
0
 void GameOver()
 {
     Debug.Log("Game OVER");
     m_EyeState    = EyeState.EyesDead;
     m_BlinkTimer  = 0.0f;
     m_SquintTimer = 0.0f;
 }
Beispiel #7
0
 void GameRestart()
 {
     Debug.Log("Game RESTART");
     m_EyeState    = EyeState.EyesOpen;
     m_BlinkTimer  = 0.0f;
     m_SquintTimer = 0.0f;
 }
Beispiel #8
0
    // Update is called once per frame
    void Update()
    {
        switch (_eyeState)
        {
        case EyeState.Resetting:
            _lookingTimer = (float)_random.NextDouble() * 10f / erraticness;
            _eyeState     = EyeState.Shaking;
            break;

        case EyeState.Shaking:
            _lookingTimer          -= Time.deltaTime;
            transform.localPosition = new Vector3(
                ((float)_random.NextDouble() * maxShakingRadius) - maxShakingRadius / 2f,
                ((float)_random.NextDouble() * maxShakingRadius) - maxShakingRadius / 2f);

            if (_lookingTimer < 0)
            {
                _lookingPosition = new Vector3(
                    ((float)_random.NextDouble() * maxLookingRadius) - maxLookingRadius / 2f,
                    ((float)_random.NextDouble() * maxLookingRadius) - maxLookingRadius / 2f);
                _eyeState     = EyeState.Aiming;
                _lookingTimer = (float)_random.NextDouble() * 10f / erraticness;
                _lookingLerp  = 0;
            }
            break;

        case EyeState.Aiming:
            transform.localPosition = Vector3.Lerp(new Vector3(0, 0), _lookingPosition, _lookingLerp);
            _lookingLerp           += Time.deltaTime * lookingSpeed;
            if (_lookingLerp >= 1)
            {
                _eyeState     = EyeState.Looking;
                _lookingLerp  = 0;
                _lookingTimer = lookingLinger;
            }
            break;

        case EyeState.Looking:
            _lookingTimer -= Time.deltaTime;

            if (_lookingTimer < 0)
            {
                _eyeState = EyeState.Returning;
            }
            break;

        case EyeState.Returning:
            transform.localPosition = Vector3.Lerp(_lookingPosition, new Vector3(0, 0), _lookingLerp);
            _lookingLerp           += Time.deltaTime * lookingSpeed;
            if (_lookingLerp >= 1)
            {
                _eyeState = EyeState.Resetting;
            }
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }
Beispiel #9
0
 private void SwitchToState(EyeState newState, bool resetStateTimerEvenIfAlreadyInState = false)
 {
     if (_state != newState || resetStateTimerEvenIfAlreadyInState)
     {
         _state       = newState;
         _timeInState = 0;
     }
 }
Beispiel #10
0
 void Awake()
 {
     eState                  = EyeState.Opening;
     eyeMoveSpeed            = 1000.0f;
     eyeOriginalPositions    = new Vector3[2];
     eyeUpRect               = eyeUp.GetComponent <RectTransform>();
     eyeDownRect             = eyeDown.GetComponent <RectTransform>();
     eyeOriginalPositions[0] = eyeUpRect.localPosition;
     eyeOriginalPositions[1] = eyeDownRect.localPosition;
 }
Beispiel #11
0
 private void MoveToAttack()
 {
     if ((Vector2)transform.position == _originalSpot)
     {
         inSpot.RaiseSignal();
         Debug.Log("Eh o bala");
         animator.SetTrigger("Close");
         state = EyeState.waiting;
         return;
     }
     transform.position = Vector2.MoveTowards(transform.position, _originalSpot, speed / 80 * Time.deltaTime);
 }
Beispiel #12
0
    public void Look()
    {
        playerTracker.Clear();
        thingsIThinkICanSee.Clear();
        thingsICanSee.Clear();

        Collider[] targetsInViewRadius = Physics.OverlapSphere(transform.position + new Vector3(0, eyeHeight, 0), viewRadius, playerOnlyLM);
        foreach (Collider c in targetsInViewRadius)
        {
            thingsIThinkICanSee.Add(c);
        }

        for (int i = 0; i < targetsInViewRadius.Length; i++)
        {
            playerTracker.Clear();
            thingsICanSee.Clear();

            //Transform player = targetsInViewRadius[i].transform;
            Transform playerTargetPoint = GM.instance.playerT;

            Vector3 dirToTarget = (playerTargetPoint.position - (transform.position - transform.forward)).normalized;

            if (Vector3.Angle(transform.forward, dirToTarget) < viewAngle / 2)
            {
                float dist = Vector3.Distance(transform.position + new Vector3(0, eyeHeight, 0), playerTargetPoint.position);
                if (!Physics.Raycast((transform.position + new Vector3(0, eyeHeight, 0)) - transform.forward, dirToTarget, out hit, dist, wallsOnlyLM))
                {
                    playerTracker.Add(playerTargetPoint);
                    thingsICanSee.Add(playerTargetPoint);
                    lastKnownPos           = playerTargetPoint.position;
                    distanceToLastKnownPos = dist;
                    myEyes        = EyeState.canSeePlayer;
                    hasSeenPlayer = true;
                    //Debug.DrawLine(transform.position + new Vector3(0, eyeHeight, 0), hit.point, Color.green);
                }

                else
                {
                    playerTracker.Clear();
                    thingsICanSee.Clear();
                    thingsIThinkICanSee.Clear();
                    Debug.DrawLine(transform.position + new Vector3(0, eyeHeight, 0), hit.point, Color.blue);
                    myEyes = EyeState.cantSeePlayer;
                }
            }
        }

        if (targetsInViewRadius.Length == 0)
        {
            myEyes = EyeState.cantSeePlayer;
        }
    }
Beispiel #13
0
    private void Start()
    {
        bossManag.eyes.Add(this);
        _rb      = GetComponent <Rigidbody2D>();
        _co      = GetComponent <Collider2D>();
        _sr      = GetComponent <SpriteRenderer>();
        animator = GetComponent <Animator>();
        InvokeRepeating("RandomSpot", Time.time, 2f);

        _originalSpot = transform.position;
        _timeBtwBlink = Random.Range(1, 3);
        state         = EyeState.idle;
        bounds        = new float[] { 11.74f, 20.98f, -8.87f, -3.8f };
    }
Beispiel #14
0
    void SetEyeState(EyeState _state)
    {
        foreach (EyeAnimKVP mak in m_EyeElements)
        {
            mak.gameObject.SetActive(mak.state == _state);
        }
        m_EyeState = _state;
        m_EyeCD    = 0.75f;

        if (m_EyeState == EyeState.Blink)
        {
            m_EyeCD = 6f;
        }
    }
Beispiel #15
0
    public IEnumerator FallCO()
    {
        _rb.isKinematic = true;
        _co.enabled     = true;
        finishedAttacking.RaiseSignal();
        animator.SetTrigger("Finished");
        state = EyeState.recharging;
        yield return(new WaitForSeconds(7f));

        _rb.isKinematic = false;
        _co.enabled     = false;
        animator.SetTrigger("Rise");
        state = EyeState.idle;
        finishedAll.RaiseSignal();
    }
        public Atom(Symbol symbol, Vector2 position, GameContent gameContent, World world)
        {
            this.gameContent = gameContent;
            this.world = world;

            if (symbol == Symbol.Ra) eye = EyeState.Angry;

            this.symbol = symbol;
            this.symbolStr = symbol.ToString();
            symbolCenter = gameContent.symbolFont.MeasureString(this.symbolStr);
            symbolCenter.X *= 0.5f;
            symbolCenter.Y *= 0.92f;

            bondsLeft = (int)symbol;

            BodyDef bd = new BodyDef();
            bd.type = BodyType.Dynamic;
            bd.position = this.position = position / gameContent.b2Scale;
            bd.bullet = true;
            body = world.CreateBody(bd);
            body.SetUserData(this);

            CircleShape cs = new CircleShape();
            cs._radius = gameContent.atomRadius / gameContent.b2Scale;

            FixtureDef fd = new FixtureDef();
            fd.shape = cs;
            fd.restitution = 0.2f;
            fd.friction = 0.5f;

            fixture = body.CreateFixture(fd);

            electroShockAnimation = new Animation(gameContent.electroShock, 3, 0.1f, true, new Vector2(0.5f, 0.5f));

            radiationSmoke = new RadiationSmoke(gameContent, this);

            // Collide only with Ground but not with itself and bonded Filter
            mouseFilter = new Filter();
            mouseFilter.categoryBits = 0x0002; mouseFilter.maskBits = 0x0001; mouseFilter.groupIndex = -2;

            // Collide with every thing
            atomFilter = new Filter();
            atomFilter.categoryBits = 0x0001; atomFilter.maskBits = 0x0001; atomFilter.groupIndex = 1;

            fixture.SetFilterData(ref atomFilter);

            SetMode(false, false);
        }
Beispiel #17
0
    public static void SetUIEyeState(EyeState state)
    {
        CurrentEyeState = state;
        switch (state)
        {
        case EyeState.Closed:
            foreach (Image eye in UIEyes)
            {
                if (eye.name.CompareTo(Closed) == 0)
                {
                    eye.enabled = true;
                }
                else
                {
                    eye.enabled = false;
                }
            }
            break;

        case EyeState.Ajar:
            foreach (Image eye in UIEyes)
            {
                if (eye.name.CompareTo(Ajar) == 0)
                {
                    eye.enabled = true;
                }
                else
                {
                    eye.enabled = false;
                }
            }
            break;

        case EyeState.Open:
            foreach (Image eye in UIEyes)
            {
                if (eye.name.CompareTo(Open) == 0)
                {
                    eye.enabled = true;
                }
                else
                {
                    eye.enabled = false;
                }
            }
            break;
        }
    }
Beispiel #18
0
    void CloseEyes()
    {
        float dt = Time.deltaTime;

        if (eyeUpRect.localPosition.y > eyeOriginalPositions[0].y)
        {
            eyeUpRect.localPosition -= new Vector3(0.0f, dt * eyeMoveSpeed, 0.0f);
        }

        if (eyeDownRect.localPosition.y < eyeOriginalPositions[1].y)
        {
            eyeDownRect.localPosition += new Vector3(0.0f, dt * eyeMoveSpeed, 0.0f);
        }

        else
        {
            eState = EyeState.Closed;
            SceneTransition_Manager.instance.GetLevelState();
        }
    }
Beispiel #19
0
    void OpenEyes()
    {
        float dt = Time.deltaTime;

        if (eyeUpRect.localPosition.y < 200)
        {
            eyeUpRect.localPosition += new Vector3(0.0f, dt * eyeMoveSpeed, 0.0f);
        }

        if (eyeDownRect.localPosition.y > -200)
        {
            eyeDownRect.localPosition -= new Vector3(0.0f, dt * eyeMoveSpeed, 0.0f);
        }

        else
        {
            eState = EyeState.Open;
            if (GameManager.instance.switchToNextPainting == true)
            {
                eState = EyeState.SwitchingPainting;
            }
        }
    }
 public void Remove()
 {
     DestroyBonds(); eye = EyeState.Disappear; world.DestroyBody(body);
 }
Beispiel #21
0
 public void SetEyeState(EyeState state)
 {
     switch (state)
     {
     case EyeState.Blink:
         this.leftEye.animation.CrossFade("blink");
         this.rightEye.animation.CrossFade("blink");
         break;
     case EyeState.WinkLeft:
         this.leftEye.animation.CrossFade("wink");
         break;
     case EyeState.NormalLeft:
         this.leftEye.animation.CrossFade("normal");
         break;
     case EyeState.WinkRight:
         this.rightEye.animation.CrossFade("wink");
         break;
     case EyeState.NormalRight:
         this.rightEye.animation.CrossFade("normal");
         break;
     case EyeState.LookLeft:
         this.leftLightLeft1.enabled = true;
         this.leftLightLeft2.enabled = true;
         this.leftLightCenter1.enabled = false;
         this.leftLightCenter2.enabled = false;
         this.leftLightRight1.enabled = false;
         this.leftLightRight2.enabled = false;
         this.rightLightLeft1.enabled = true;
         this.rightLightLeft2.enabled = true;
         this.rightLightCenter1.enabled = false;
         this.rightLightCenter2.enabled = false;
         this.rightLightRight1.enabled = false;
         this.rightLightRight2.enabled = false;
         this.eyeLightCountDown = 20;
         break;
     case EyeState.LookRight:
         this.leftLightLeft1.enabled = false;
         this.leftLightLeft2.enabled = false;
         this.leftLightCenter1.enabled = false;
         this.leftLightCenter2.enabled = false;
         this.leftLightRight1.enabled = true;
         this.leftLightRight2.enabled = true;
         this.rightLightLeft1.enabled = false;
         this.rightLightLeft2.enabled = false;
         this.rightLightCenter1.enabled = false;
         this.rightLightCenter2.enabled = false;
         this.rightLightRight1.enabled = true;
         this.rightLightRight2.enabled = true;
         this.eyeLightCountDown = 20;
         break;
     case EyeState.LookMiddle:
         this.leftLightLeft1.enabled = false;
         this.leftLightLeft2.enabled = false;
         this.leftLightCenter1.enabled = true;
         this.leftLightCenter2.enabled = true;
         this.leftLightRight1.enabled = false;
         this.leftLightRight2.enabled = false;
         this.rightLightLeft1.enabled = false;
         this.rightLightLeft2.enabled = false;
         this.rightLightCenter1.enabled = true;
         this.rightLightCenter2.enabled = true;
         this.rightLightRight1.enabled = false;
         this.rightLightRight2.enabled = false;
         break;
     }
 }
        public void Draw(SpriteBatch spriteBatch, GameTime gameTime)
        {
            if (eye == EyeState.Disappear)
            {
                removeZoom += (float)gameTime.ElapsedGameTime.TotalSeconds;
                if (removeZoom > MaxRemoveTime) eye = EyeState.Remove;
            }

            if (symbol == Symbol.Ra || radShockTime < MaxShockTime * 0.2f)
                radiationSmoke.Draw(spriteBatch, gameTime);

            spriteBatch.Draw(gameContent.atom[(int)symbol], position * gameContent.b2Scale, null,
                Color.White * (1 - removeZoom / MaxRemoveTime),
                body.Rotation, gameContent.atomOrigin,
                1 + removeZoom / MaxRemoveTime * MaxRemoveZoom, SpriteEffects.None, 1);

            if (eye > EyeState.Sleep) return;

            if (symbol != Symbol.Ra)
            {
                spriteBatch.DrawString(gameContent.symbolFont, symbolStr, position * gameContent.b2Scale,
                       bondsLeft == 0 ? Color.Gainsboro : Color.White, body.Rotation,
                       symbolCenter, 16f / gameContent.symbolFontSize, SpriteEffects.None, 1);

                spriteBatch.Draw(gameContent.eyes[(int)symbol % 2, (int)eye], position * gameContent.b2Scale,
                    null, Color.White, body.Rotation, gameContent.atomOrigin, 1, SpriteEffects.None, 1);
            }
            else
                spriteBatch.Draw(gameContent.eyes[(int)symbol % 2 - (int)eye, 0], position * gameContent.b2Scale,
                        null, Color.White, body.Rotation, gameContent.atomOrigin, 1, SpriteEffects.None, 1);

            spriteBatch.Draw(gameContent.shine, position * gameContent.b2Scale, null, Color.White,
                body.Rotation, gameContent.atomOrigin, 1, SpriteEffects.None, 1);

            if (eye == EyeState.Shock && electroShockTime < MaxShockTime * 0.15f)
            {
                animationPlayer.PlayAnimation(electroShockAnimation);
                animationPlayer.Draw(gameTime, spriteBatch, shockPosition * gameContent.b2Scale);
            }
        }
Beispiel #23
0
 public void PrepareToAttack()
 {
     state = EyeState.preparing;
 }
Beispiel #24
0
 // Start is called before the first frame update
 void Start()
 {
     state = EyeState.inHead;
 }
Beispiel #25
0
 /// <summary>
 /// 使用双眼的状态初始化结果
 /// </summary>
 /// <param name="leftEyeState">左眼状态</param>
 /// <param name="rightEyeState">右眼状态</param>
 public EyeStateResult(EyeState leftEyeState, EyeState rightEyeState)
 {
     LeftEyeState  = leftEyeState;
     RightEyeState = rightEyeState;
 }
 void LateUpdate()
 {
     _eyeState = EyeState.PreRender;
 }
        public void SetMode(bool editMode, bool isMouse)
        {
            if (symbol == Symbol.Ra && isMouse) eye = EyeState.AngrySleep;

            this.isMouse = isMouse;

            float density = 0.5f;

            if (editMode || isMouse)
            {
                density = 0.3f; body.SetAngularDamping(1000);
                body.GetFixtureList().SetFilterData(ref mouseFilter);
            }
            else
            {
                body.SetAngularDamping(0);
                body.GetFixtureList().SetFilterData(ref atomFilter);
            }

            body.GetFixtureList().SetDensity(density);
            body.ResetMassData();

            if (editMode) //fixed
            {
                body.SetAngularVelocity(0); body.SetLinearVelocity(Vector2.Zero); body.SetLinearDamping(10000);
            }
            else if (!editMode)
            {
                body.SetLinearDamping(0);
            }
        }
        void SetEyeState(GameTime gameTime)
        {
            if (eye < EyeState.Disappear && symbol != Symbol.Ra)
            {
                if (bonds.Count == 0)
                {
                    if (electroShockTime < MaxShockTime)
                    {
                        electroShockTime += (float)gameTime.ElapsedGameTime.TotalSeconds; eye = EyeState.Shock;
                    }
                    else if (radShockTime < MaxShockTime)
                    {
                        radShockTime += (float)gameTime.ElapsedGameTime.TotalSeconds; eye = EyeState.Shock;
                    }
                    else eye = EyeState.Sad;
                }
                else electroShockTime = radShockTime = MaxShockTime;

                if (bonds.Count > 0) eye = EyeState.Wake;

                if (bondsLeft == 0)
                {
                    eye = EyeState.Happy;
                    sleepTime += (float)gameTime.ElapsedGameTime.TotalSeconds;
                    if (sleepTime > MaxSleepTime)
                    {
                        eye = EyeState.Sleep;
                    }
                }
                else sleepTime = 0;
            }
        }
Beispiel #29
0
 public void Idle()
 {
     animator.SetTrigger("Open");
     state = EyeState.idle;
 }
Beispiel #30
0
 public void Dead()
 {
     state = EyeState.dead;
 }
        void CheckCollision()
        {
            for (ContactEdge ce = body.GetContactList(); ce != null; ce = ce.Next)
            {
                object userData = ce.Other.GetUserData();
                if (ce.Contact.IsTouching() && userData is EquipmentName
                    && (EquipmentName)userData == EquipmentName.electrodes)
                {
                    DestroyBonds();

                    WorldManifold wm;
                    ce.Contact.GetWorldManifold(out wm); shockPosition = wm._points[0];

                    if (electroShockTime >= MaxShockTime)
                    {
                        electroShockTime = 0;

                        //throw
                        body.ApplyForce(new Vector2(250f
                            * (shockPosition.X < body.Position.X ? 1 : -1), 0), body.GetWorldCenter());

                        Cue cue = gameContent.soundBank.GetCue("shock"); cue.Play();
                    }
                }

                if (symbol != Symbol.Ra && radShockTime >= MaxShockTime && ce.Contact.IsTouching()
                    && userData is Atom && ((Atom)userData).symbol == Symbol.Ra)
                {
                    DestroyBonds();
                    Cue cue = gameContent.soundBank.GetCue("radio"); cue.Play();
                    radShockTime = 0;
                }

                if (symbol == Symbol.Ra && !isMouse && ce.Contact.IsTouching()) eye = EyeState.Angry;
            }
        }
Beispiel #32
0
    // Update is called once per frame
    void Update()
    {
        if (!blockPresent)
        {
            isActive = false;
        }

        if (isActive)
        {
            energySource.transform.position = Vector3.Lerp(energySource.transform.position, energySourceFinPos.position,
                                                           sourceSpeed * Time.deltaTime);
            energySource.transform.rotation = Quaternion.Slerp(energySource.transform.rotation, energySourceFinPos.rotation, 20 * Time.deltaTime);
            if (golState == golemState.Patrol)
            {
                if (Vector3.Distance(cage.transform.position, Eye.transform.position) < 0.2f)
                {
                    cage.SetActive(false);
                }
                else
                {
                    cage.transform.position = Vector3.Lerp(cage.transform.position, Eye.transform.position, cageSpeed * Time.deltaTime * 5);
                }

                timeSinceDrop = timeSinceDrop + Time.deltaTime;
                if (beeper.isPlaying && beeper.clip == alarm)
                {
                    if (beeper.volume > 0.05f)
                    {
                        beeper.volume -= 0.03f;
                    }
                    else
                    {
                        beeper.Stop();
                        beeper.loop = false;
                    }
                }

                if (Vector3.Distance(transform.position, patrolPoints[currentPatrolPoint].position) < 0.3f)
                {
                    currentPatrolPoint = (currentPatrolPoint + 1) % patrolPoints.Length;

                    turning     = true;
                    agent.speed = turnSpeed;
                    Invoke("stopTurning", 3f);
                    if (!beeper.isPlaying || (beeper.clip == alarm && beeper.isPlaying))
                    {
                        beeper.clip   = wallBeep;
                        beeper.pitch  = initPitch;
                        beeper.volume = initVolume;
                        beeper.Play();
                    }
                }
                agent.SetDestination(patrolPoints[currentPatrolPoint].position);

                /*eyeRot = eyeRot + eyeSwaySpeed;
                 * if (eyeRot > maxEyeSwayAngle)
                 * {
                 *  eyeSwaySpeed = -1 * Mathf.Abs(eyeSwaySpeed); //use sine graph
                 * }
                 * else if (eyeRot < -maxEyeSwayAngle)
                 * {
                 *  eyeSwaySpeed = Mathf.Abs(eyeSwaySpeed); //use sine graph
                 * }*/
                //Eye.localEulerAngles = new Vector3(initEyeRot.x, eyeRot, initEyeRot.z);
            }
            else if (golState == golemState.Chasing)
            {
                if (Vector3.Distance(cage.transform.position, Eye.transform.position) < 0.2f)
                {
                    cage.SetActive(false);
                }
                else
                {
                    cage.transform.position = Vector3.Lerp(cage.transform.position, Eye.transform.position, cageSpeed * Time.deltaTime * 5);
                }

                if (!beeper.isPlaying)
                {
                    beeper.clip   = alarm;
                    beeper.pitch  = 1;
                    beeper.volume = alarmVolume;
                    beeper.Play();
                    beeper.loop = true;
                }
                //Eye.LookAt(diegoTarget.transform);
                // = Eye.eulerAngles.y;
                //Eye.localEulerAngles = new Vector3(0, eyeRot, 0);

                if (eyeState == EyeState.Passive)
                {
                    eyeState = EyeState.LockedOn;
                    for (int i = 0; i < eyeLights.Length; i++)
                    {
                        eyeLights[i].color = lockedOnEyeColours[i];
                    }
                    rend.material = lockedOnEyeMat;
                }

                agent.speed        = chaseSpeed;
                agent.angularSpeed = chaseAngularSpeed;

                //if (Vector3.Distance(energyCubeTarget.transform.position, transform.position) < 15f)   //Change to hide out of sight
                //{
                if (Vector3.Distance(diegoTarget.transform.position, transform.position) < 2.85f)
                {
                    golState       = golemState.Lifting;
                    diegoMoveBehav = diegoTarget.GetComponent <MoveBehaviour>();
                    diegoMoveBehav.lockMovement = true;
                    diegoTarget.GetComponent <Animator>().enabled = false;
                    agent.SetDestination(transform.position);
                    diegoTarget.GetComponent <Rigidbody>().isKinematic = true;
                }
                else
                {
                    agent.SetDestination(diegoTarget.transform.position);
                }
                //}
                //else
                //{
                //    seekState = seekerState.Destroying;
                //}
            }
            else if (golState == golemState.Lifting)
            {
                //show our cage, move it and expand it
                cage.SetActive(true);
                if (cage.transform.localScale.x < finalCageScale)
                {
                    cage.transform.localScale = cage.transform.localScale * (1 + (cageSpeed * 2 * Time.deltaTime));
                }
                cage.transform.position = Vector3.Lerp(cage.transform.position, diegoTarget.transform.position + new Vector3(0, 1, 0), cageSpeed * Time.deltaTime);


                if (Vector3.Distance(diegoTarget.transform.position, liftPos.position) > 0.3f)
                {
                    diegoTarget.transform.position = Vector3.Lerp(diegoTarget.transform.position, liftPos.position, liftSpeed * Time.deltaTime);
                }
                else
                {
                    golState = golemState.Holding;
                }
            }
            else if (golState == golemState.Holding)
            {
                cage.transform.position = Vector3.Lerp(cage.transform.position, diegoTarget.transform.position + new Vector3(0, 1, 0), cageSpeed * Time.deltaTime * 5);

                agent.SetDestination(returnPos.position);
                diegoTarget.transform.position = Vector3.Lerp(diegoTarget.transform.position, liftPos.position, 20f * Time.deltaTime);
                if (Vector3.Distance(returnPos.position, transform.position) < stoppingDistRetPos)
                {
                    golState = golemState.Dropping;
                    agent.SetDestination(transform.position);
                }
            }
            else if (golState == golemState.Dropping)
            {
                cage.transform.position = Vector3.Lerp(cage.transform.position, diegoTarget.transform.position + new Vector3(0, 1, 0), cageSpeed * Time.deltaTime * 5);

                agent.SetDestination(transform.position);
                diegoTarget.transform.position = Vector3.Lerp(diegoTarget.transform.position, returnPos.position, liftSpeed * Time.deltaTime);
                if (Vector3.Distance(returnPos.position, diegoTarget.transform.position) < 0.5f)
                {
                    diegoTarget.GetComponent <Rigidbody>().isKinematic = false;
                    timeSinceDrop = 0;
                    golState      = golemState.Returning;
                    diegoMoveBehav.lockMovement = false;
                    diegoTarget.GetComponent <Animator>().enabled = true;
                }
            }
            else if (golState == golemState.Returning)
            {
                if (cage.transform.localScale.x > initCageScale)
                {
                    cage.transform.localScale = cage.transform.localScale * (1 - (cageSpeed * 2 * Time.deltaTime));
                }
                if (Vector3.Distance(cage.transform.position, Eye.transform.position) < 0.2f && cage.transform.localScale.x <= initCageScale)
                {
                    cage.SetActive(false);
                }
                else
                {
                    cage.transform.position = Vector3.Lerp(cage.transform.position, Eye.transform.position, cageSpeed * Time.deltaTime * 5);
                }

                timeSinceDrop      = timeSinceDrop + Time.deltaTime;
                agent.speed        = stdSpeed;
                agent.angularSpeed = stdAngularSpeed;
                //Here we go back on patrol
                if (eyeState == EyeState.LockedOn)
                {
                    eyeState = EyeState.Passive;
                    for (int i = 0; i < eyeLights.Length; i++)
                    {
                        eyeLights[i].color = PassiveEyeColours[i];
                    }
                    rend.material = passiveEyeMat;
                }

                if (beeper.isPlaying)
                {
                    if (beeper.clip == alarm && beeper.volume > 0.05f)
                    {
                        beeper.volume -= 0.03f;
                    }
                    else
                    {
                        beeper.Stop();
                        beeper.loop = false;
                    }
                }

                if (Vector3.Distance(transform.position, initPatrolPos) < 0.2f)
                {
                    golState = golemState.Patrol;
                }
                else
                {
                    agent.SetDestination(initPatrolPos);
                }
            }
        }
        else
        {
            if (beeper.isPlaying && beeper.clip == alarm)
            {
                if (beeper.volume > 0.05f)
                {
                    beeper.volume -= 0.03f;
                }
                else
                {
                    beeper.Stop();
                    beeper.loop = false;
                }
            }

            if (eyeState == EyeState.LockedOn)
            {
                eyeState = EyeState.Passive;
                for (int i = 0; i < eyeLights.Length; i++)
                {
                    eyeLights[i].color = PassiveEyeColours[i];
                }
                rend.material = passiveEyeMat;
            }

            golState = golemState.Patrol;

            agent.SetDestination(transform.position);
            if (blockPresent)
            {
                energySource.transform.position = Vector3.Lerp(energySource.transform.position, energySourceFinPos.position,
                                                               sourceSpeed * Time.deltaTime);
                energySource.transform.rotation = Quaternion.Slerp(energySource.transform.rotation, energySourceFinPos.rotation, 20 * Time.deltaTime);
                if (Vector3.Distance(energySource.transform.position, energySourceFinPos.position) < 0.03f)
                {
                    energySource.transform.parent = energySourceFinPos;
                    isActive = true;
                }

                for (int i = 0; i < eyeLights.Length; i++)
                {
                    if (eyeLights[i].intensity < initLightIntensity[i])
                    {
                        eyeLights[i].intensity += Time.deltaTime * 30;
                    }
                }
                if (rend.fillAmount < 1)
                {
                    rend.fillAmount += Time.deltaTime;
                }
            }
            else
            {
                for (int i = 0; i < eyeLights.Length; i++)
                {
                    if (eyeLights[i].intensity > 0)
                    {
                        eyeLights[i].intensity -= Time.deltaTime * 30;
                    }
                }
                if (rend.fillAmount > 0)
                {
                    rend.fillAmount -= Time.deltaTime;
                }
            }
        }
    }
Beispiel #33
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetButtonDown("Jump"))
        {
            FlapWing();
            Sniffle();
        }

        if (m_WingFlapTimer > 0)
        {
            m_WingFlapTimer -= m_FlapSpeed * Time.deltaTime;
            if (m_WingFlapTimer < 0)
            {
                m_WingFlapTimer = 0;
            }
            float angle = 60.0f + 60.0f * (0.5f - 0.5f * Mathf.Cos(2.0f * Mathf.PI * m_WingFlapTimer));
            m_LeftWing.transform.localRotation  = Quaternion.Euler(new Vector3(0, 0, angle));
            m_RightWing.transform.localRotation = Quaternion.Euler(new Vector3(0, 0, -angle));
        }

        if (m_SnoutSniffleTimer > 0)
        {
            m_SnoutSniffleTimer -= m_SniffleSpeed * Time.deltaTime;
            if (m_SnoutSniffleTimer < 0)
            {
                m_SnoutSniffleTimer = 0;
            }
            float angle = -10.0f * (0.5f - 0.5f * Mathf.Cos(2.0f * Mathf.PI * m_SnoutSniffleTimer));
            m_Snout.transform.localRotation = Quaternion.Euler(new Vector3(angle, -180.0f, 0));
        }
        else
        {
            if (Random.value > Mathf.Pow(1.0f - m_SniffleProbability, Time.deltaTime))
            {
                Sniffle();
            }
        }

        // tail waggle
        float theta = m_WaggleAmount * (Mathf.PerlinNoise(m_WaggleSpeed * Time.time, 0) + 0.5f * Mathf.PerlinNoise(2.01f * m_WaggleSpeed * Time.time, 0));
        float phi   = m_WaggleAmount * (Mathf.PerlinNoise(m_WaggleSpeed * Time.time, 1) + 0.5f * Mathf.PerlinNoise(2.01f * m_WaggleSpeed * Time.time, 1));

        m_Tail.transform.localRotation = Quaternion.Euler(new Vector3(theta, phi, 0));

        // leg swing
        {
            float speed = m_PigController.Velocity.x;
            float angle = -m_LegSwingRange * (Mathf.SmoothStep(0, 1, 0.5f + 0.1f * speed) - 0.5f);
            m_FrontLeftLeg.transform.localRotation  = Quaternion.Euler(new Vector3(angle, 0, 0));
            m_FrontRightLeg.transform.localRotation = Quaternion.Euler(new Vector3(angle, 0, 0));
            m_BackLeftLeg.transform.localRotation   = Quaternion.Euler(new Vector3(angle, 0, 0));
            m_BackRightLeg.transform.localRotation  = Quaternion.Euler(new Vector3(angle, 0, 0));
        }

        // eyes
        if (m_BlinkTimer > 0)
        {
            m_EyeState    = EyeState.EyesClosed;
            m_BlinkTimer -= m_BlinkSpeed * Time.deltaTime;
            if (m_BlinkTimer < 0)
            {
                m_BlinkTimer = 0;
                m_EyeState   = EyeState.EyesOpen;
            }
        }
        else if (m_SquintTimer > 0)
        {
            m_EyeState     = EyeState.EyesSquint;
            m_SquintTimer -= m_SquintSpeed * Time.deltaTime;
            if (m_SquintTimer < 0)
            {
                m_SquintTimer = 0;
                m_EyeState    = EyeState.EyesOpen;
            }
        }
        else
        {
            if (Random.value > Mathf.Pow(1.0f - m_BlinkProbability, Time.deltaTime))
            {
                Blink();
            }
            else if (Random.value > Mathf.Pow(1.0f - m_SquintProbability, Time.deltaTime))
            {
                Squint();
            }
        }
        m_EyesOpen.SetActive(m_EyeState == EyeState.EyesOpen);
        m_EyesClosed.SetActive(m_EyeState == EyeState.EyesClosed);
        m_EyesSquint.SetActive(m_EyeState == EyeState.EyesSquint);
        m_EyesDead.SetActive(m_EyeState == EyeState.EyesDead);

        // coin counter text
        m_CoinCounterText.transform.rotation = Quaternion.identity;
        if (m_CoinCount <= 0)
        {
            m_CoinCounterText.rectTransform.localPosition = m_CoinCounterInitialPosition;
            m_CoinCounterText.color = Color.red;
        }
        else if (m_CoinCount <= 3)
        {
            m_CoinCounterText.rectTransform.localPosition = m_CoinCounterInitialPosition;

            float dangerFactor = (4.0f - m_CoinCount) / 3.0f;
            float flashSpeed   = 4.0f * dangerFactor;
            m_CoinCounterText.color = Color.Lerp(
                m_CoinCounterInitialColor,
                new Color(1.0f, 0.0f, 0.0f,
                          Mathf.Sin(flashSpeed * 2.0f * Mathf.PI * Time.time)),
                dangerFactor);
        }
        else if (m_CoinCounterTimer > 0)
        {
            m_CoinCounterTimer -= m_CoinCounterSpeed * Time.deltaTime;
            if (m_CoinCounterTimer < 0)
            {
                m_CoinCounterTimer = 0;
            }

            Color textColor = m_CoinCounterInitialColor;
            textColor.a             = Mathf.SmoothStep(0.0f, 1.0f, m_CoinCounterTimer);
            m_CoinCounterText.color = textColor;
            m_CoinCounterText.rectTransform.localPosition = m_CoinCounterInitialPosition +
                                                            1.0f * (1.0f - m_CoinCounterTimer) * (m_CoinCounterText.transform.localRotation * Vector3.up);
        }
    }
        void CheckCollision(GameTime gameTime)
        {
            for (ContactEdge ce = body.GetContactList(); ce != null; ce = ce.Next)
            {
                object userData = ce.Other.GetUserData();
                if (ce.Contact.IsTouching() && userData is EquipmentName
                    && (EquipmentName)userData == EquipmentName.electrodes)
                {
                    DestroyBonds();

                    WorldManifold wm;
                    ce.Contact.GetWorldManifold(out wm); shockPosition = wm._points[0];

                    if (electroShockTime >= MaxShockTime)
                    {
                        electroShockTime = 0;

                        //throw
                        body.ApplyForce(new Vector2(250f * 60 * (float)gameTime.ElapsedGameTime.TotalSeconds
                            * (shockPosition.X < body.Position.X ? 1 : -1), 0), body.GetWorldCenter());

                        gameContent.shock[gameContent.random.Next(gameContent.shock.Length)].Play();
                    }
                }

                if (symbol != Symbol.Ra && radShockTime >= MaxShockTime && ce.Contact.IsTouching()
                    && userData is Atom && ((Atom)userData).symbol == Symbol.Ra)
                {
                    DestroyBonds();
                    gameContent.radio[gameContent.random.Next(gameContent.radio.Length)].Play();
                    radShockTime = 0;
                }

                if (symbol == Symbol.Ra && !isMouse && ce.Contact.IsTouching()) eye = EyeState.Angry;
            }
        }
Beispiel #35
0
    // Update is called once per frame
    void Update()
    {
        if (seekState == seekerState.Patrol)
        {
            if (beeper.isPlaying && beeper.clip == alarm)
            {
                if (beeper.volume > 0.05f)
                {
                    beeper.volume -= 0.03f;
                }
                else
                {
                    beeper.Stop();
                    beeper.loop = false;
                }
            }
            //here we do our raycasting
            if (Vector3.Distance(transform.position, patrolPoints[currentPatrolPoint].position) < 0.3f)
            {
                currentPatrolPoint = (currentPatrolPoint + 1) % patrolPoints.Length;

                turning     = true;
                agent.speed = turnSpeed;
                Invoke("stopTurning", 1f);
                if (!beeper.isPlaying || (beeper.clip == alarm && beeper.isPlaying))
                {
                    beeper.clip   = wallBeep;
                    beeper.pitch  = initPitch;
                    beeper.volume = initVolume;
                    beeper.Play();
                }
            }
            agent.SetDestination(patrolPoints[currentPatrolPoint].position);

            eyeRot = eyeRot + eyeSwaySpeed;
            if (eyeRot > maxEyeSwayAngle)
            {
                eyeSwaySpeed = -1 * Mathf.Abs(eyeSwaySpeed); //use sine graph
            }
            else if (eyeRot < -maxEyeSwayAngle)
            {
                eyeSwaySpeed = Mathf.Abs(eyeSwaySpeed); //use sine graph
            }
            Eye.localEulerAngles = new Vector3(0, eyeRot, 0);
        }
        else if (seekState == seekerState.Chasing)
        {
            if (!beeper.isPlaying)
            {
                beeper.clip   = alarm;
                beeper.pitch  = 1;
                beeper.volume = alarmVolume;
                beeper.Play();
                beeper.loop = true;
            }
            Eye.LookAt(energyCubeTarget.transform);
            //eyeRot = Eye.eulerAngles.y;
            //Eye.localEulerAngles = new Vector3(0, eyeRot, 0);

            if (eyeState == EyeState.Passive)
            {
                eyeState = EyeState.LockedOn;
                for (int i = 0; i < eyeLights.Length; i++)
                {
                    eyeLights[i].color = lockedOnEyeColours[i];
                }
                rend.material = lockedOnEyeMat;
            }

            agent.speed        = chaseSpeed;
            agent.angularSpeed = chaseAngularSpeed;

            //if (Vector3.Distance(energyCubeTarget.transform.position, transform.position) < 15f)   //Change to hide out of sight
            //{
            if (Vector3.Distance(energyCubeTarget.transform.position, transform.position) < 2.85f)
            {
                seekState = seekerState.Destroying;
                agent.SetDestination(transform.position);
            }
            else
            {
                agent.SetDestination(energyCubeTarget.transform.position);
            }
            //}
            //else
            //{
            //    seekState = seekerState.Destroying;
            //}
        }
        else if (seekState == seekerState.Destroying)
        {
            if (!destroyingObject)
            {
                DestroyDelay = energyCubeTarget.dissolveTime / 2;
                Invoke("stopDestroying", DestroyDelay);
                if (energyCubeTarget.Interactions != null)
                {
                    energyCubeTarget.Interactions.dropObject();
                }
                myObjectHandler.objectToLift = energyCubeTarget.gameObject;
                myObjectHandler.LiftObject();
                destroyingObject = true;
                if (beeper.isPlaying)
                {
                    if (beeper.clip == alarm && beeper.volume > 0.05f)
                    {
                        beeper.volume -= 0.03f;
                    }
                    else
                    {
                        beeper.Stop();
                        beeper.loop = false;
                    }
                }
                energyCubeTarget.Dissolve();
            }
        }
        else if (seekState == seekerState.Returning)
        {
            agent.speed        = stdSpeed;
            agent.angularSpeed = stdAngularSpeed;
            //Here we go back on patrol
            if (eyeState == EyeState.LockedOn)
            {
                eyeState = EyeState.Passive;
                for (int i = 0; i < eyeLights.Length; i++)
                {
                    eyeLights[i].color = PassiveEyeColours[i];
                }
                rend.material = passiveEyeMat;
            }

            if (beeper.isPlaying)
            {
                if (beeper.clip == alarm && beeper.volume > 0.05f)
                {
                    beeper.volume -= 0.03f;
                }
                else
                {
                    beeper.Stop();
                    beeper.loop = false;
                }
            }

            if (Vector3.Distance(transform.position, initPatrolPos) < 0.2f)
            {
                seekState = seekerState.Patrol;
            }
            else
            {
                agent.SetDestination(initPatrolPos);
            }
        }
    }
Beispiel #36
0
    public void SetEyeState(EyeState state)
    {
        switch (state)
        {
        case EyeState.Blink:
            this.leftEye.animation.CrossFade("blink");
            this.rightEye.animation.CrossFade("blink");
            break;

        case EyeState.WinkLeft:
            this.leftEye.animation.CrossFade("wink");
            break;

        case EyeState.NormalLeft:
            this.leftEye.animation.CrossFade("normal");
            break;

        case EyeState.WinkRight:
            this.rightEye.animation.CrossFade("wink");
            break;

        case EyeState.NormalRight:
            this.rightEye.animation.CrossFade("normal");
            break;

        case EyeState.LookLeft:
            this.leftLightLeft1.enabled    = true;
            this.leftLightLeft2.enabled    = true;
            this.leftLightCenter1.enabled  = false;
            this.leftLightCenter2.enabled  = false;
            this.leftLightRight1.enabled   = false;
            this.leftLightRight2.enabled   = false;
            this.rightLightLeft1.enabled   = true;
            this.rightLightLeft2.enabled   = true;
            this.rightLightCenter1.enabled = false;
            this.rightLightCenter2.enabled = false;
            this.rightLightRight1.enabled  = false;
            this.rightLightRight2.enabled  = false;
            this.eyeLightCountDown         = 20;
            break;

        case EyeState.LookRight:
            this.leftLightLeft1.enabled    = false;
            this.leftLightLeft2.enabled    = false;
            this.leftLightCenter1.enabled  = false;
            this.leftLightCenter2.enabled  = false;
            this.leftLightRight1.enabled   = true;
            this.leftLightRight2.enabled   = true;
            this.rightLightLeft1.enabled   = false;
            this.rightLightLeft2.enabled   = false;
            this.rightLightCenter1.enabled = false;
            this.rightLightCenter2.enabled = false;
            this.rightLightRight1.enabled  = true;
            this.rightLightRight2.enabled  = true;
            this.eyeLightCountDown         = 20;
            break;

        case EyeState.LookMiddle:
            this.leftLightLeft1.enabled    = false;
            this.leftLightLeft2.enabled    = false;
            this.leftLightCenter1.enabled  = true;
            this.leftLightCenter2.enabled  = true;
            this.leftLightRight1.enabled   = false;
            this.leftLightRight2.enabled   = false;
            this.rightLightLeft1.enabled   = false;
            this.rightLightLeft2.enabled   = false;
            this.rightLightCenter1.enabled = true;
            this.rightLightCenter2.enabled = true;
            this.rightLightRight1.enabled  = false;
            this.rightLightRight2.enabled  = false;
            break;
        }
    }
Beispiel #37
0
 } // End FlipX
 //
 public void SetState(EyeState key)
 {
     state = key;
     SetPos();
 }