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); } }
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; } }
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; }
void GameOver() { Debug.Log("Game OVER"); m_EyeState = EyeState.EyesDead; m_BlinkTimer = 0.0f; m_SquintTimer = 0.0f; }
void GameRestart() { Debug.Log("Game RESTART"); m_EyeState = EyeState.EyesOpen; m_BlinkTimer = 0.0f; m_SquintTimer = 0.0f; }
// 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(); } }
private void SwitchToState(EyeState newState, bool resetStateTimerEvenIfAlreadyInState = false) { if (_state != newState || resetStateTimerEvenIfAlreadyInState) { _state = newState; _timeInState = 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; }
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); }
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; } }
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 }; }
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; } }
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); }
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; } }
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(); } }
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); }
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); } }
public void PrepareToAttack() { state = EyeState.preparing; }
// Start is called before the first frame update void Start() { state = EyeState.inHead; }
/// <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; } }
public void Idle() { animator.SetTrigger("Open"); state = EyeState.idle; }
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; } }
// 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; } } } }
// 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; } }
// 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); } } }
} // End FlipX // public void SetState(EyeState key) { state = key; SetPos(); }