Ejemplo n.º 1
0
 public static Vector3 GetDirectionxy(float angle)
 {
     GetDirectionxy_dir.x = MathDxx.Sin(angle);
     GetDirectionxy_dir.y = MathDxx.Cos(angle);
     GetDirectionxy_dir.z = 0;
     return(GetDirectionxy_dir);
 }
Ejemplo n.º 2
0
        private static float ExcuteReboundWall(Vector3 position, float angle, Collider o, float offsetdir)
        {
            float   x         = MathDxx.Sin(angle);
            float   z         = MathDxx.Cos(angle);
            Vector3 direction = new Vector3(x, 0f, z);

            RaycastHit[] hitArray = Physics.RaycastAll(position + (offsetdir * direction), direction, 100f, ((int)1) << o.gameObject.layer);
            float        num3     = getAngle(direction);

            for (int i = 0; i < hitArray.Length; i++)
            {
                RaycastHit hit = hitArray[i];
                if (hit.collider.gameObject == o.gameObject)
                {
                    Vector3 vector2 = hit.point - hit.collider.transform.position;
                    Vector3 size    = hit.collider.GetComponent <BoxCollider>().size;
                    float   num5    = (size.x * hit.transform.localScale.x) / ((size.z * 1.23f) * hit.transform.localScale.z);
                    if (vector2.z > 0f)
                    {
                        float introduced12 = Mathf.Abs(vector2.x);
                        if (introduced12 < (vector2.z * num5))
                        {
                            return(180f - angle);
                        }
                    }
                    if (vector2.z < 0f)
                    {
                        float introduced13 = Mathf.Abs(vector2.x);
                        if (introduced13 < (-vector2.z * num5))
                        {
                            return(180f - angle);
                        }
                    }
                    if (vector2.x > 0f)
                    {
                        float introduced14 = Mathf.Abs(vector2.z);
                        if (introduced14 < (vector2.x / num5))
                        {
                            return(-angle);
                        }
                    }
                    return(-angle);
                }
            }
            return(-angle);
        }
Ejemplo n.º 3
0
        public static float ExcuteReboundWall(float angle, Vector3 pos, GameObject o)
        {
            float   x         = MathDxx.Sin(angle);
            float   z         = MathDxx.Cos(angle);
            Vector3 direction = new Vector3(x, 0f, z);
            Vector3 origin    = pos - direction;

            foreach (RaycastHit hit in Physics.RaycastAll(origin, direction, 2f, ((int)1) << o.gameObject.layer))
            {
                if (hit.collider.gameObject == o)
                {
                    Vector3 vector3 = hit.point - hit.collider.transform.position;
                    Vector3 size    = hit.collider.GetComponent <BoxCollider>().size;
                    float   num4    = (size.x * hit.transform.localScale.x) / ((size.z * 1.23f) * hit.transform.localScale.z);
                    if (vector3.z > 0f)
                    {
                        float introduced12 = Mathf.Abs(vector3.x);
                        if (introduced12 <= (vector3.z * num4))
                        {
                            return(180f - angle);
                        }
                    }
                    if (vector3.z < 0f)
                    {
                        float introduced13 = Mathf.Abs(vector3.x);
                        if (introduced13 <= (-vector3.z * num4))
                        {
                            return(180f - angle);
                        }
                    }
                    if (vector3.x > 0f)
                    {
                        float introduced14 = Mathf.Abs(vector3.z);
                        if (introduced14 <= (vector3.x / num4))
                        {
                            return(-angle);
                        }
                    }
                    return(-angle);
                }
            }
            return(0f);
        }