void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("CameraEdge")) { Destroy(gameObject); return; } Damageable damageable = other.GetComponent <Damageable> (); if (damageable != null) { damageable.TakeDamage(damageInflicted, this); Rigidbody2D rgbdy = damageable.GetComponent <Rigidbody2D> (); if (!damageable.CompareTag("Player")) { rgbdy.AddForceAtPosition(GetComponent <Rigidbody2D> ().velocity.normalized * 2f, transform.position); } else { rgbdy.AddForceAtPosition(GetComponent <Rigidbody2D> ().velocity.normalized * .1f, transform.position); } Destroy(gameObject); } }
void FixedUpdate() { targetRightX = transform.position.x + transform.localScale.x / 2f; targetLeftX = transform.position.x - transform.localScale.x / 2f; targetY = transform.position.y + transform.localScale.y / 2f; var moveHorizontal = joystick.Horizontal; isGround = GroundColliders.Count > 0; if (moveHorizontal > 0.9f && isGround) { targetRight = new Vector3(targetRightX, targetY); body.AddForceAtPosition(Vector3.right * speed, targetRight); flip = 1; } if (moveHorizontal < -0.9f && isGround) { targetLeft = new Vector3(targetLeftX, targetY); body.AddForceAtPosition(Vector3.left * speed, targetLeft); flip = -1; } // Ограничение скорости if (Mathf.Abs(body.velocity.x) > speedLimit) { body.velocity = new Vector2(Mathf.Sign(body.velocity.x) * speedLimit, body.velocity.y); } if (Mathf.Abs(body.velocity.y) > jumpLimit) { body.velocity = new Vector2(body.velocity.x, Mathf.Sign(body.velocity.y) * jumpLimit); } }
void Update() { if (Input.GetKey(KeyCode.D)) { rb.AddForce(Vector2.right * speed * Time.deltaTime, ForceMode2D.Force); } if (Input.GetKey(KeyCode.A)) { rb.AddForce(Vector2.left * speed * Time.deltaTime, ForceMode2D.Force); } if (Input.GetKeyDown(KeyCode.W)) { Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, radius); foreach (Collider2D collider in colliders) { if (collider.CompareTag("Ground") || collider.CompareTag("Wall")) { rb.velocity = new Vector2(0f, jump_Force); if (Input.GetKey(KeyCode.D)) { rb.AddForceAtPosition(Vector2.right * speed * Time.deltaTime, transform.position, ForceMode2D.Force); } if (Input.GetKey(KeyCode.A)) { rb.AddForceAtPosition(Vector2.left * speed * Time.deltaTime, transform.position, ForceMode2D.Force); } } } } }
void punch() { if (readyToAttack) { punching = true; Vector3 start = transform.position + transform.up; Vector3 end; if (facingRight) { end = start + punchReach * transform.right; } else { end = start + punchReach * -transform.right; } Vector2 punchDir = end - start; if (Physics2D.Linecast(start, end)) { enemyrb.AddForceAtPosition(punchDir.normalized * punchPower, start); source.Play(); JoScript.takeDamage(punchDamage); } } }
void FixedUpdate() { if (controller.Inputs.LeftJet > 0) { rgdb.AddForceAtPosition(jetForce * naveDirection, t_leftJet.position); } if (controller.Inputs.RightJet > 0) { rgdb.AddForceAtPosition(jetForce * naveDirection, t_rightJet.position); } if (Mathf.Abs(rgdb.velocity.x) > 0.1f) { rgdb.velocity = Vector2.Lerp(rgdb.velocity, Vector2.up * rgdb.velocity, 0.01f); } if (rgdb.rotation > 80) { rgdb.rotation = Mathf.Lerp(rgdb.rotation, 80, 0.01f); rgdb.angularVelocity = 0; } else if (rgdb.rotation < -80) { rgdb.rotation = Mathf.Lerp(rgdb.rotation, -80, 0.01f); rgdb.angularVelocity = 0; } if (rgdb.rotation > controller.AngleTurnOffJet && !controller.OnEndLevelZone) { rgdb.velocity += naveFowardDirection * 0.015f; } }
private void FixedUpdate() { timeCounter -= Time.fixedDeltaTime; if (ComboManager.State == ComboManager.ComboState.BulletSpinClock) { } else if (ComboManager.State == ComboManager.ComboState.BulletSpinAntiC) { } else if (ComboManager.State == ComboManager.ComboState.ShieldStrike) { } else if (ComboManager.State == ComboManager.ComboState.ShipOfTheLine) { } //else if (ComboManager.State == ComboManager.ComboState.Fortress) { //} //else if (ComboManager.State == ComboManager.ComboState.SwordAndBoardP1) { //} //else if (ComboManager.State == ComboManager.ComboState.SwordAndBoardP2) { //} else if (nitroOn) { rigidbody.AddForceAtPosition(nitroThrust * transform.up, transform.position, ForceMode2D.Force); } else if (Input.GetAxis(player1 ? "p1 b" : "p2 b") > 0.01f) { rigidbody.AddForceAtPosition(thrust * transform.up, transform.position, ForceMode2D.Force); } }
private void FixedUpdate() { if (((Vector2)(CharacterControl.instance.transform.position - ForcePos.position)).sqrMagnitude < activeDistance * activeDistance) //一定范围内攻击玩家 { if (isHead) { if (isActive) { Vector2 direction = ((Vector2)CharacterControl.instance.transform.position - (Vector2)ForcePos.position).normalized; rig.AddForceAtPosition(direction * force, ForcePos.position); } } else { if (isActive) { Vector2 direction = Vector3.Cross(((Vector2)CharacterControl.instance.transform.position - (Vector2)ForcePos.position).normalized, Vector3.back); _time0 += Time.deltaTime; if (_time0 < changeTime) { rig.AddForceAtPosition(direction * force, ForcePos.position); } else { _time0 = 0; force = 0 - force; } } } } }
void Movement() { if (Input.GetKey(KeyCode.Q) || isPressedLeft) { rb.AddForceAtPosition(left_rocket.transform.up * thrust, left_rocket.transform.position); left_emitter.Play(); timeStart = true; } if (Input.GetKey(KeyCode.P) || isPressedRight) { rb.AddForceAtPosition(right_rocket.transform.up * thrust, right_rocket.transform.position); right_emitter.Play(); timeStart = true; } if (Input.GetKeyUp(KeyCode.Q)) { left_emitter.Stop(); } if (Input.GetKeyUp(KeyCode.P)) { right_emitter.Stop(); } if (Input.GetKey(KeyCode.W)) { rb.AddForceAtPosition(right_rocket.transform.up * thrust, right_rocket.transform.position); rb.AddForceAtPosition(left_rocket.transform.up * thrust, left_rocket.transform.position); } }
private void FixedUpdate() { if (this.isLocalPlayer && groundDetector.isTouchingGround) { rb.AddForceAtPosition(Vector2.right * moveForce, Vector2.zero); } }
void FixedUpdate() { var move = Input.GetAxis("Horizontal"); //myRigidBody.AddForceAtPosition (); Vector2 impulse = new Vector2(0, -move); if (move < 0) { myRigidBody.AddForceAtPosition(-impulse, leftPushDownOffset); } else { myRigidBody.AddForceAtPosition(impulse, rightPushDownOffset); } //Debug.DrawLine(Vector3.zero+leftPushDownOffSet, Vector3.zero+leftPushDownOffSet + #if UNITY_EDITOR if (move < 0) { Debug.DrawLine(leftPushDownOffset, leftPushDownOffset - impulse); } else { Debug.DrawLine(rightPushDownOffset, rightPushDownOffset + impulse); } #endif }
void Movement() { if (Input.GetKey(KeyCode.A)) { rb.AddForceAtPosition(left_rocket.transform.up * thrust, left_rocket.transform.position); left_emitter.Play(); leftThrust.SetActive(true); } if (Input.GetKey(KeyCode.L)) { rb.AddForceAtPosition(right_rocket.transform.up * thrust, right_rocket.transform.position); right_emitter.Play(); rightThrust.SetActive(true); } if (Input.GetKeyUp(KeyCode.A)) { left_emitter.Stop(); leftThrust.SetActive(false); } if (Input.GetKeyUp(KeyCode.L)) { right_emitter.Stop(); rightThrust.SetActive(false); } }
// Update is called once per frame void Update() { // Get input for thrusters leftThrusterInput = Input.GetAxis("Left Thruster"); rightThrusterInput = Input.GetAxis("Right Thruster"); // Increase angular drag if both thrusters active rb2d.angularDrag = (leftThrusterInput > 0 && rightThrusterInput > 0 ? increasedAngularDrag : angularDrag); // Increase linear drag if both thursters active // rb2d.drag = (leftThrusterInput > 0 && rightThrusterInput > 0 ? increasedLinearDrag : linearDrag); // Handle left thruster input if (leftThrusterInput > 0) { rb2d.AddForceAtPosition(transform.up * (thrusterForce * leftThrusterInput), leftThrusterPosition.transform.position); } animator.SetBool("Left Thruster Active", leftThrusterInput > 0); // Handle right thruster input if (rightThrusterInput > 0) { rb2d.AddForceAtPosition(transform.up * (thrusterForce * rightThrusterInput), rightThrusterPosition.transform.position); } animator.SetBool("Right Thruster Active", rightThrusterInput > 0); // Let the game manager know the player has started the current level if ((leftThrusterInput > 0 || rightThrusterInput > 0) && GameManager.instance.hasStartedCurrentLevel == false) { GameManager.instance.hasStartedCurrentLevel = true; } }
void FixedUpdate() { if (GetComponent <Health>().health > 0) { Vector2 dir = new Vector2(); dir.x = Mathf.Cos(Mathf.Deg2Rad * (transform.eulerAngles.z + 90)); dir.y = Mathf.Sin(Mathf.Deg2Rad * (transform.eulerAngles.z + 90)); if (!onGround) { if (transform.eulerAngles.z > 30 && transform.eulerAngles.z < 180) { float dif = (transform.eulerAngles.z - 30) * Time.fixedDeltaTime; rb.AddForceAtPosition(dir * Mathf.Min(MovementForce, dif * CorrectionStrength), LeftProp.transform.position); } if (transform.eulerAngles.z < 330 && transform.eulerAngles.z > 180) { float dif = (330 - transform.eulerAngles.z) * Time.fixedDeltaTime; rb.AddForceAtPosition(dir * Mathf.Min(MovementForce, dif * CorrectionStrength), RightProp.transform.position); } } if (Input.GetKey(MoveLeft)) { rb.AddForceAtPosition(dir * MovementForce, RightProp.transform.position); } if (Input.GetKey(MoveRight)) { rb.AddForceAtPosition(dir * MovementForce, LeftProp.transform.position); } if (Input.GetKey(SelfDestruct)) { GetComponent <Health>().hurt(10000); } } }
public void toppleLeftByRat(float force) { Vector2 rightCircleVector = rightCircle.transform.position; trophyRigid.AddForceAtPosition(Vector2.left * force * 1.5f, rightCircleVector); isMoving = true; }
void FixedUpdate() { Debug.DrawRay(_spaceRigidbody.position, _engineForceVector * 10, Color.red); _spaceRotationZ = transform.rotation.eulerAngles.z; _engineForceVector.x = (Mathf.Sin(_spaceRotationZ * Mathf.PI / 180)) * -1; _engineForceVector.y = Mathf.Cos(_spaceRotationZ * Mathf.PI / 180); #region KeyEvents if (Input.GetKey(KeyCode.F) && Input.GetKey(KeyCode.J) || Input.GetKey(KeyCode.Space)) { _spaceRigidbody.AddForceAtPosition(_engineForceVector * EnginePower * 2, _spaceRigidbody.position, ForceMode2D.Force); } if (Input.GetKey(KeyCode.J) && !Input.GetKey(KeyCode.F)) { _spaceRigidbody.AddForceAtPosition(_engineForceVector * EnginePower, RightEngineTransform.position, ForceMode2D.Force); } if (Input.GetKey(KeyCode.F) && !Input.GetKey(KeyCode.J)) { _spaceRigidbody.AddForceAtPosition(_engineForceVector * EnginePower, LeftEngineTransform.position, ForceMode2D.Force); } #endregion }
public static void AddExplosionForceAtPosition(this Rigidbody2D body, Vector2 bodyPosition, float explosionForce, Vector2 explosionPosition, float explosionRadius, bool applyWearOff, ForceMode2D mode) { var delta = (body.position - explosionPosition); var dist = delta.magnitude; if (dist > 0f) { if (applyWearOff) { float wearoff = 1 - (dist / explosionRadius); if (wearoff > 0f) { var dir = delta / dist; Vector3 baseForce = dir * (explosionForce * wearoff); body.AddForceAtPosition(baseForce, bodyPosition, mode); } } else { var dir = delta / dist; Vector3 baseForce = dir * explosionForce; body.AddForceAtPosition(baseForce, bodyPosition, mode); } } }
void OnCollisionEnter2D(Collision2D col) { Rigidbody2D subject = col.collider.gameObject.GetComponent <Rigidbody2D> (); if (subject != null) { ContactPoint2D c = col.contacts[0]; Vector2 away = (col.collider.gameObject.transform.position - transform.position).normalized; Ship s = subject.GetComponent <Ship> (); if (s != null) { s.RandomTalk(); // figure out if shielder is active on the ship, skip the collision if so. if (s.IsShieldedTowards(c.normal)) { body.AddForceAtPosition(-away * selfbounce, c.point, ForceMode2D.Impulse); shieldedSFX.Play(); stuntimer = 10f; return; } } stuntimer = .25f; subject.AddForceAtPosition(away * pushaway, c.point, ForceMode2D.Impulse); body.AddForceAtPosition(-away * selfbounce, c.point, ForceMode2D.Impulse); bounceSFX.Play(); } }
public void State_UpdateMoveToPos() { _dir = _destPos - transform.position; //-------------------------------- //-------------------------------- //_rb2d.AddForce (_dir, ForceMode2D.Force); // == force //_rb2d.AddForce (_dir.normalized * 15, ForceMode2D.Force); //_rb2d.AddForceAtPosition(_dir.normalized * 20, _destPos, ForceMode2D.Force); // _rb2d.angularVelocity = 0f; // _rb2d.angularDrag = 0f; // _rb2d.drag = 0f; if (Cat.eMove.Normal == _moveMode) { //-------------------------------- //liner moving _rb2d.MovePosition(transform.position + (_destPos - transform.position) * 0.1f); } if (Cat.eMove.JumpFly == _moveMode) { this.ControlLayer_Falling(); S_State_UpdateMoveToPos_sumTime += Time.deltaTime; if (S_State_UpdateMoveToPos_sumTime > 0.3f) { this.gameObject.layer = GlobalConstants.Layer.Num.superCat; this.s_ControlLayer_Falling.Init(transform); S_State_UpdateMoveToPos_sumTime = 0; } //_rb2d.AddForce (_dir * 2, ForceMode2D.Impulse); if (_rb2d.velocity.sqrMagnitude <= 20.8f) { _rb2d.AddForce(_dir, ForceMode2D.Impulse); // ++ force } else { _rb2d.AddForce(_dir, ForceMode2D.Force); // == force } } if (Cat.eMove.JumpRush == _moveMode) { _rb2d.AddForceAtPosition(_dir, _destPos, ForceMode2D.Impulse); } if (Cat.eMove.Super == _moveMode) { _rb2d.MovePosition(transform.position + (_destPos - transform.position) * 0.2f); } if (Cat.eMove.Ninja == _moveMode) { //-------------------------------- //순간이동 닌자 느낌 _rb2d.MovePosition(_destPos); } }
public override void AddForce(Vector3 force) { if (!HasRigidbody()) { return; } rigidbody.AddForceAtPosition(force, collider.bounds.center); }
// Update is called once per frame void Update() { if (isSimulating) { leverRB.AddForceAtPosition(loadForce, loadIcon.transform.position); leverRB.AddForceAtPosition(effortForce, effortIcon.transform.position); } }
public void NoInput() { if (!IsGrounded()) { rig.AddForceAtPosition((-Vector2.right + Vector2.up) * accelerationSpeed * 0.25f * Time.deltaTime, wheels[1].connectedBody.transform.position); } }
// Update is called once per frame void FixedUpdate() { car.AddForceAtPosition(-transform.up * moveSpeed, motor.position); car.AddForceAtPosition(-transform.up * moveSpeed, wheels.position); Turn(Input.GetAxis("Horizontal")); }
public void fireLeftThruster(float thrustAmount) { //rigidBody.AddForceAtPosition(new Vector2(0, fuelLines(sideThrusterPower, thrustAmount)), new Vector2(-10, 10)); float power = fuelLines(sideThrusterPower, thrustAmount); power = power > 0 ? power : 0; rigidBody.AddForceAtPosition(new Vector2(leftThruster.up.x * power, leftThruster.up.y * power), leftThruster.position); }
void FixedUpdate() { lastLength = springLength; RaycastHit2D hit = Physics2D.Raycast(wheelPoint.position, -wheelPoint.up, rideHeight); if (hit.collider != null) { springCompression = Vector2.Distance(wheelPoint.position + (-wheelPoint.up * minLength), hit.point) / rideHeight; springCompression = springCompression - 1; springCompression = Mathf.Abs(springCompression); springLength = Vector2.Distance(wheelPoint.position + (-wheelPoint.up * minLength), hit.point); wheelTransform.position = hit.point + (new Vector2(wheelPoint.up.x, wheelPoint.up.y) * tireRadius); isGrounded = true; } else { springCompression = 0f; springLength = rideHeight; wheelTransform.position = wheelPoint.position + (-wheelPoint.up * (rideHeight - tireRadius)); isGrounded = false; } springVelocity = (lastLength - springLength) / Time.fixedDeltaTime; damperForce = damperStiffness * springVelocity; Vector3 localVel = transform.InverseTransformDirection(planeRB.velocity); planeRB.AddForceAtPosition((wheelPoint.up * springCompression * (springForce + damperForce)), wheelPoint.position); if (brakingWheel && isGrounded) { if (isBraking) { planeRB.AddForceAtPosition(planeRB.transform.right * Mathf.Lerp(actualBrakeForce, -planeRB.velocity.normalized.x * brakeForce, .1f), wheelGraphicsTransform.position); } else { actualBrakeForce = Mathf.Lerp(actualBrakeForce, 0f, .1f); } } float tireCircumference = 2 * Mathf.PI * tireRadius; float speedInMetersPerMinute = planeRB.velocity.magnitude * 6; float rotations = speedInMetersPerMinute / tireCircumference; if (isGrounded) { wheelTransform.Rotate(new Vector3(0f, 0f, rotations * -planeRB.velocity.normalized.x)); } if (Mathf.Abs(lastFramePlaneYVel) > planeController.destroyVel && isGrounded) { planeController.isDestroyed = true; } lastFramePlaneYVel = planeRB.velocity.y; }
public void Forces() { Vector2 force = Vector2.ClampMagnitude(targetPos * multiplier, clamp) * CanMove; if (body.GetRelativePointVelocity(forcePoint).magnitude < maxSpeed) { body.AddForceAtPosition(force, ForcePoint, ForceMode2D.Impulse); } }
void Jump() { jumpEffect.Show( new Vector3(transform.position.x + 1.31f, transform.position.y + 1.13705f, 0.0f)); rigidbody2d.AddForceAtPosition(new Vector2(0.0f, 3.0f) * jumpVelocity, rigidbody2d.position, ForceMode2D.Force); }
// Update is called once per frame void Update() { if (!Enabled) { return; } _CalculateRotationState(); _CalculateAngle(); var position1 = _corner1.Transform.position; Debug.DrawLine( position1, position1 + new Vector3(_corner1.Target.x, _corner1.Target.y), Color.red ); var position2 = _corner2.Transform.position; Debug.DrawLine( position2, position2 + new Vector3(_corner2.Target.x, _corner2.Target.y), Color.green ); isGrounded = IsGrounded(); var now = Time.time; if (isGrounded || TimePassedForJump(now)) { if (Input.GetKeyDown(KeyCode.A) || Input.GetMouseButtonDown(0)) { secondJump = isGrounded; _lastJump = now; _rigidBody2D.AddForceAtPosition(_corner1.Target, position1, ForceMode2D.Impulse); _corner1.Particles.Play(); AudioManager.instance.PlaySound(jumpSound); } else if (Input.GetKeyDown(KeyCode.D) || Input.GetMouseButtonDown(1)) { secondJump = isGrounded; _lastJump = now; _rigidBody2D.AddForceAtPosition(_corner2.Target, position2, ForceMode2D.Impulse); _corner2.Particles.Play(); AudioManager.instance.PlaySound(jumpSound); } // Reset position to last checkpoint. if (Input.GetKeyDown(KeyCode.R)) { if (now > _resetTimer + resetCooldown) { _racer.SpawnInLastCheckpoint(); _resetTimer = now; } } } }
void ApplyRandomForce() { direction = transform.localPosition * 0.1f - Vector3.zero; Rigidbody2D rb = GetComponent <Rigidbody2D> (); rb.AddForceAtPosition(_ForcePower * Random.insideUnitCircle, _ForceOffset * Random.insideUnitCircle); //单位圆里的随机点 rb.AddForceAtPosition(-direction * 5.0f, new Vector2(10, 0)); //rb.AddForce (_ForcePower * Random.insideUnitCircle ); }
public void FixedUpdate() { if (!isAlive) { rb.velocity = Vector2.zero; return; } float adjustedPowerBoost = powerBoost; float adjustedLeftThrust = leftThrust - 0.5f; float adjustedRightThrust = rightThrust - 0.5f; if (Time.time - slowingDownStart > 1.0f) { slowingDown = false; } // Discourage behaviour that causes rapid change of direction. float[] signNow = { Mathf.Sign(adjustedLeftThrust), Mathf.Sign(adjustedRightThrust) }; if (lastSign.SequenceEqual(signNow)) { sameSign += 1; } else { if (sameSign < changeTolerance || signNow.Reverse().SequenceEqual(lastSign)) { adjustedPowerBoost *= slowDownFactor; slowingDown = true; slowingDownStart = Time.time; } sameSign = 0; } lastSign = signNow; float leftPower = powerBoost * adjustedLeftThrust; float rightPower = powerBoost * adjustedRightThrust; Vector2 leftForce = transform.up * leftPower; Vector2 rightForce = transform.up * rightPower; rb.AddForceAtPosition(leftForce, BLwheel.position, ForceMode2D.Force); rb.AddForceAtPosition(leftForce, FLwheel.position, ForceMode2D.Force); rb.AddForceAtPosition(rightForce, BRwheel.position, ForceMode2D.Force); rb.AddForceAtPosition(rightForce, FRwheel.position, ForceMode2D.Force); if (rb.angularVelocity > maxAngularVelocity) { rb.angularVelocity = maxAngularVelocity; } else if (rb.angularVelocity < -maxAngularVelocity) { rb.angularVelocity = -maxAngularVelocity; } }
private void FixedUpdate() { // Debug.Log(transform.InverseTransformDirection(rb.velocity)); if (isFlying) { float factor = transform.InverseTransformDirection(rb.velocity).y *transform.InverseTransformDirection(rb.velocity).x / windForce; rb.AddForceAtPosition(new Vector2(0, -windForce * Time.deltaTime * factor), new Vector2(-0.2f, 0)); rb.AddForceAtPosition(new Vector2(0, windForce * Time.deltaTime * factor), Vector2.zero); } }