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;
                    }
                }
            }
        }
  • 相关阅读:
    Google搜索引擎如何运作:不会手动调整结果
    一个Ruby脚本
    IE灭绝!?
    除Windows之外的其他操作系统
    刚收到的新书
    奇怪的计算机语言
    小巧的menuetOS
    Ruby学习笔记(1)
    一个通知
    总结 asp.net 和 javascript获取本地IP(MAC)和服务器IP(MAC)的方法
  • 原文地址:https://www.cnblogs.com/sy-liu/p/13088175.html
Copyright © 2011-2022 走看看