private void ForceOnDistance() { var distanceToDart = Vector3.Distance(transform.position, CurrentDart.transform.position); var distanceToGun = Vector3.Distance(transform.position, CurrentGun.gameObject.transform.position); if (distanceToDart < distanceToGun) { var direction = CurrentDart.transform.position - transform.position; MainRigidbody.AddForce(direction.normalized * Mathf.Sqrt(distanceToGun) * Mathf.Pow(_maxForce / (distanceToDart + distanceToGun), 3)); } else { var direction = CurrentGun.gameObject.transform.position - transform.position; MainRigidbody.AddForce(direction.normalized * Mathf.Sqrt(distanceToDart) * Mathf.Pow(_maxForce / (distanceToDart + distanceToGun), 3)); } if (!IgnoreFloor && Vector3.Distance(transform.position, NextChain.transform.position) > (CurrentGun.Settings.HoseLength * 4)) { //Debug.Break(); Debug.Log(transform.position); Debug.Log("distance is " + Vector3.Distance(transform.position, NextChain.transform.position)); //if (HitFloor != null) HitFloor(this, EventArgs.Empty); } }
private void CascadeToNeighbour(GameObject measureDistanceTo, DartChainV2 targettocascade) { if (!_isStaticChain) { var distancetochain = Vector3.Distance(measureDistanceTo.transform.position, transform.position); if (distancetochain >= CurrentGun.Settings.HoseLength) { var direction = measureDistanceTo.transform.position - transform.position; MainRigidbody.AddForce(direction.normalized * _maxForce * distancetochain); targettocascade.CascadeForce(this, _maxForce * _mitigationFactor * distancetochain); } } }
private void CascadeForce(DartChainV2 source, float forcetoAdd) { if (!_isStaticChain) { var direction = source.transform.position - transform.position; MainRigidbody.AddForce(direction.normalized * forcetoAdd); if (source == PreviousChain) { NextChain.CascadeForce(this, forcetoAdd * _mitigationFactor); } else if (source == NextChain) { PreviousChain.CascadeForce(this, forcetoAdd * _mitigationFactor); } } }
public override bool OnHurt(DamageData damageData) { switch (State) { case 0: State = 1; MainRigidbody.AddForce(damageData.force * 50); HitAndHurtDelegate.Hurt(damageData); break; case 1: break; case 2: State = 3; MainRigidbody.AddForce(damageData.force * 50); HitAndHurtDelegate.Hurt(damageData); break; } return(true); }
public override void OnUpdate() { //transform.eulerAngles = new Vector3(0, 0, MathUtils.SpeedToDirection(Speed)); //SceneManager.Instance.CurrSceneController.RoleControllerList GameObject player1; if (mubiaolist.Count != 0) { player1 = mubiaolist[0].gameObject; } else { player1 = GameObject.Find("Player1"); } var addForce = (player1.transform.position - gameObject.transform.position).normalized * 10; addForce = new Vector3(addForce.x, 0, addForce.z); MainRigidbody.AddForce(addForce); }
protected override void Fire_SetVelocity(Vector3 speedAndDir) { MainRigidbody.AddForce(transform.forward * speedAndDir.sqrMagnitude * VelocityMultiplier, ForceMode.VelocityChange); }
protected override void Fire_SetVelocity(Vector3 speedAndDir) { base.Fire_SetVelocity(speedAndDir); MainRigidbody.AddTorque(transform.forward * 10); }