public override void Change() { if (rb == null) { rb = GetComponent <Rigidbody2D>(); } if (brotherScript.rb == null) { brotherScript.rb = brotherObject.GetComponent <Rigidbody2D>(); } //El objeto que modifica a ambos haciendo de controlador es el que pertenece a Dawn if (worldAssignation == world.DAWN) { //Si antes del cambio estaba en dawn, pasara a hacerse kinematic y al otro dynamic, además de darle su velocidad if (dawn) { dawnState = new SeedIdleState(); dominantVelocity = rb.velocity; brotherScript.dominantVelocity = rb.velocity; brotherScript.rb.bodyType = RigidbodyType2D.Dynamic; rb.bodyType = RigidbodyType2D.Kinematic; OnlyFreezeRotation(); brotherScript.rb.velocity = dominantVelocity; rb.velocity = new Vector2(0.0f, 0.0f); if (duskState != null) { duskState.OnEnter(this); } } //Si antes del cambio estaba en dusk, pasara a hacerse dynamic y al otro kinematic, además de darle su velocidad else { brotherScript.SwitchState(1, new SeedPathFollowState()); touchedByPlayer = false; dominantVelocity = brotherScript.rb.velocity; brotherScript.dominantVelocity = brotherScript.rb.velocity; rb.bodyType = RigidbodyType2D.Dynamic; brotherScript.rb.bodyType = RigidbodyType2D.Kinematic; brotherScript.rb.velocity = new Vector2(0.0f, 0.0f); rb.velocity = dominantVelocity; if (dawnState != null) { dawnState.OnEnter(this); } } dawn = !dawn; brotherScript.dawn = !brotherScript.dawn; } }
override public void Update(Agent a, float dt) { FlyingSeed agentScript = a.GetComponent <FlyingSeed>(); if (agentScript.grabbedObject == null) { agentScript.CheckForObjects(); } if (stompTime > stompTimer) { stompTimer += dt; } //Lleva el tiempo establecido en el suelo, así que sube hasta alcanzar speed>1 if (agentScript.timeOnTheGround > maxTimeOnTheGround) { if (a.GetComponent <Rigidbody2D>().velocity.y < 1) { a.GetComponent <Rigidbody2D>().velocity = new Vector2(0, a.GetComponent <Rigidbody2D>().velocity.y + speedUp * Time.deltaTime); } else { a.SwitchState(0, new SeedIdleState()); } //Falta tiempo en el suelo } else { agentScript.timeOnTheGround += Time.deltaTime; } //Comprobación de cambio de estado if (agentScript.stompedOn && stompTimer > stompTime && agentScript.timeOnTheGround > maxTimeOnTheGround) { agentScript.SwitchState(0, new SeedFallState()); stompTimer = 0; } }