zoukankan      html  css  js  c++  java
  • Unity 汽车碰撞

    protected void OnCollisionEnter(Collision collision)
        {
            if (isCollision)
            {
                return;
            }
            int layer = collision.gameObject.layer;
            if (CheckEnableCollision(layer))
            {
                ContactPoint[] contacts = collision.contacts;
                ContactPoint contact = contacts[0];
                Vector3 point = contact.point;
                if (moveCoroutine != null)
                {
                    StopCoroutine(moveCoroutine);
                }
                animator.enabled = false;
                //Debug.Log("point==(" + point.x + "," + point.y + "," + point.z + ")" + ";
    transform.position==(" + transform.position.x + "," + transform.position.y + "," + transform.position.z + ")"
                //        + ";
    meshFilter.position==(" + meshFilter.transform.position.x + "," + meshFilter.transform.position.y + "," + meshFilter.transform.position.z + ")");
                Vector3 colliderPosition = new Vector3(point.x, colliderPos.position.y, point.z);
                GetMinDistanceFromVerticle(colliderPosition);
                Vector3 direction = (new Vector3(transform.position.x, colliderPosition.y, transform.position.z) - colliderPosition).normalized;
                float angleX = Vector3.Angle(new Vector3(direction.x, 0, direction.z), new Vector3(0, 0, 2));
                float angleZ = Vector3.Angle(new Vector3(direction.x, 0, direction.z), new Vector3(2, 0, 0));
                float rotateX = 0;
                float rotateZ = 0f;
                if (angleX > 90)
                {
                    rotateX = -15f;
                }else if(angleX < 90)
                {
                    rotateX = 15f;
                }
               if(angleZ > 90)
                {
                    rotateZ = 15;
                }else if(angleZ < 90)
                {
                    rotateZ = -15;
                }
                _rigibody.angularDrag = 0;
                _rigibody.AddForce(new Vector3(40 * direction.x, 80, 40 * direction.z),ForceMode.Impulse);
                _rigibody.angularVelocity = new Vector3(rotateX, 0, rotateZ);
                GameManager.Instance.vehicleCrashEffect.transform.position = point;
                GameManager.Instance.vehicleCrashEffect.SetActive(true);
                GameManager.Instance.vehicleCrashEffect.GetComponent<ParticleSystem>().Play();
                GameAudioManager.Instance.PlayCarContact();
                MMVibrationManager.Haptic(HapticTypes.HeavyImpact);
                isCollision = true;
                if (!isArrivedLineEnd)
                {
                    GameEventManager.SendOnVehicleArrivedLineEndEvent(colorIdx);
                    if (this.vehicleType == VEHICLELTYPE.NORMAL)
                    {
                        GameManager.Instance.ArrivedLineEndCnt += 1;
                        isArrivedLineEnd = true;
                    }
                }
            }
        }
  • 相关阅读:
    黑客书架上的书籍(转)
    vc 得到文件后缀名(转)
    配置IIS7(转)
    vs2008 目标框架 发布遇到的问题(转)
    CListCtrl用法(转)
    T400 折腾
    VS2008和.NET Framework3.5新功能(转)
    sql 2008 ctp 安装
    关于定位lsass内存中的明文密码(转)
    NT系统下木马进程的隐藏与检测(转)
  • 原文地址:https://www.cnblogs.com/sy-liu/p/13088175.html
Copyright © 2011-2022 走看看