Beispiel #1
0
 private void OnCollisionEnter(Collision collision)
 {
     Debug.Log(collision.collider.gameObject.name);
     if (parking && gameObject.transform.parent != parking.transform && collision.collider.gameObject.name != "BodyCollider" && collision.collider.gameObject.name != "HeadCollider")
     {
         IsRoadArguments args = new IsRoadArguments(this.transform.position);
         CityGenerator.SendMessage("isRoad", args);
         if (!args.answer)
         {
             Destroy(this.gameObject);
         }
         else
         {
             gameObject.transform.localScale = new Vector3(2, 2, 2);
             gameObject.transform.position   = gameObject.transform.position + new Vector3(0, 0, 0);
             if (!gameObject.GetComponent <CarMovement>().togglemove)
             {
                 CarTransformArgs carArgs = new CarTransformArgs(gameObject.transform);
                 CityGenerator.SendMessage("getCarTransformOnRoad", carArgs);
             }
             gameObject.GetComponent <Rigidbody>().velocity        = new Vector3(0, 0, 0);
             gameObject.GetComponent <Rigidbody>().angularVelocity = new Vector3(0, 0, 0);
         }
     }
 }
Beispiel #2
0
    void getCarTransformOnRoad(CarTransformArgs args)
    {
        IsRoadArguments argsIs = new IsRoadArguments(args.transform.position);

        isRoad(argsIs);
        if (argsIs.answer)
        {
            int x = -(int)args.transform.position.x / 20;
            int y = (int)args.transform.position.z / 20;

            int relativeX = -(int)args.transform.position.x % 20;
            int relativeY = (int)args.transform.position.z % 20;

            Debug.Log(relativeX + " " + relativeY);

            RoadType r = getRoadType(x, y);
            switch (r)
            {
            case RoadType.DEAD_END_LEFT:
            case RoadType.DEAD_END_RIGHT:
            case RoadType.STRAIGHT_H:
                if (relativeY <= 10)
                {
                    args.transform.rotation = Quaternion.Euler(0, 90, 0);
                }
                else
                {
                    args.transform.rotation = Quaternion.Euler(0, -90, 0);
                }
                break;

            case RoadType.DEAD_END_DOWN:
            case RoadType.DEAD_END_UP:
            case RoadType.STRAIGHT_V:
                if (relativeX <= 10)
                {
                    args.transform.rotation = Quaternion.Euler(0, 0, 0);
                }
                else
                {
                    args.transform.rotation = Quaternion.Euler(0, 180, 0);
                }
                break;

            case RoadType.CROSS:
                break;

            case RoadType.TRI_UP:
                if (relativeY <= 3)
                {
                    if (relativeX <= 10)
                    {
                        args.transform.rotation = Quaternion.Euler(0, 0, 0);
                    }
                    else
                    {
                        args.transform.rotation = Quaternion.Euler(0, 180, 0);
                    }
                }
                else if (relativeX <= 10)
                {
                    args.transform.rotation = Quaternion.Euler(0, 0, 0);
                }
                else
                {
                    args.transform.rotation = Quaternion.Euler(0, 180, 0);
                }
                break;

            case RoadType.TRI_DOWN:
                if (relativeY >= 17)
                {
                    if (relativeX <= 10)
                    {
                        args.transform.rotation = Quaternion.Euler(0, 0, 0);
                    }
                    else
                    {
                        args.transform.rotation = Quaternion.Euler(0, 180, 0);
                    }
                }
                else if (relativeX >= 10)
                {
                    args.transform.rotation = Quaternion.Euler(0, 0, 0);
                }
                else
                {
                    args.transform.rotation = Quaternion.Euler(0, 180, 0);
                }
                break;
            }
        }
    }