示例#1
0
    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);
        }
    }
示例#2
0
 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);
         }
     }
 }
示例#3
0
 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);
         }
     }
 }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
 protected override void Fire_SetVelocity(Vector3 speedAndDir)
 {
     MainRigidbody.AddForce(transform.forward * speedAndDir.sqrMagnitude * VelocityMultiplier, ForceMode.VelocityChange);
 }
示例#7
0
 protected override void Fire_SetVelocity(Vector3 speedAndDir)
 {
     base.Fire_SetVelocity(speedAndDir);
     MainRigidbody.AddTorque(transform.forward * 10);
 }