Пример #1
0
    public void Init()
    {
        int     randomInt = UnityEngine.Random.Range(0, 360);
        Vector2 dir       = Vector2.up;

        dir = Vector2DFunctions.RotateVec(dir, randomInt);
        Debug.Log("random DIR:" + dir);
        _info             = GetComponent <PhysicsInfo>();
        _info.Speed       = _speed;
        _info.Direction   = dir.normalized;
        _info.OldPosition = Vector2DFunctions.GetTransform2D(this);
    }
Пример #2
0
 public override void Step()
 {
     if (!Static)
     {
         Info.OldPosition = Vector2DFunctions.GetTransform2D(this);
         Vector2DFunctions.Update2DTransform(Info.NewPosition, this);
         WriteAxises();
         //   Debug.Log("not static");
         if (Info.mover)
         {
             Info.mover.Step();
             // Debug.Log("has mover");
         }
     }
 }
Пример #3
0
    // Start is called before the first frame update
    void Start()
    {
        Info = GetComponent <PhysicsInfo>();

        Info.OldPosition = new Vector2(transform.position.x, transform.position.y);
        Info.NewPosition = new Vector2(transform.position.x, transform.position.y);

        _lineCenter = Info.OldPosition;
        float   length      = transform.localScale.y;
        Vector3 orientation = transform.eulerAngles;
        Vector2 dir         = Vector2.up;

        dir = Vector2DFunctions.RotateVec(dir, orientation.z);

        _lineStart  = -dir * length / 2 + _lineCenter;
        _lineEnd    = dir * length / 2 + _lineCenter;
        _lineDirVec = dir;
    }
Пример #4
0
    public override void InitPhysicsComponent()
    {
        Info             = GetComponent <PhysicsInfo>();
        radiusX          = transform.localScale.x * 0.5f;
        radiusY          = transform.localScale.y * 0.5f;
        Info.OldPosition = Vector2DFunctions.GetTransform2D(this);
        Info.NewPosition = Info.OldPosition;
        Axises           = new Axis[4];
        Info.verticies   = new Vector2[4];
        Info.IsStatic    = Static;
        Info.radius      = transform.localScale.x / 2;
        WriteAxises();

        if (GetComponent <MoverComponent>())
        {
            Info.mover = GetComponent <MoverComponent>();
            Info.mover.Init();
            Info.Speed = Info.mover.GetSpeed();
        }
    }
Пример #5
0
    private void WriteAxises()
    {
        float rotationAngle = transform.eulerAngles.z;

        Vector2 upVec = Vector2.down;

        upVec = Vector2DFunctions.RotateVec(upVec, rotationAngle);
        upVec = upVec.normalized * radiusY;

        Vector2 rightVec = Vector2.right;

        rightVec = Vector2DFunctions.RotateVec(rightVec, rotationAngle);
        rightVec = rightVec.normalized * radiusX;

        Info.verticies[0] = Info.OldPosition - rightVec - upVec;
        Info.verticies[1] = Info.OldPosition + rightVec - upVec;
        Info.verticies[2] = Info.OldPosition + rightVec + upVec;
        Info.verticies[3] = Info.OldPosition - rightVec + upVec;

        Axises[0] = new Axis(Info.verticies[0], Info.verticies[1]);
        Axises[1] = new Axis(Info.verticies[1], Info.verticies[2]);
        Axises[2] = new Axis(Info.verticies[2], Info.verticies[3]);
        Axises[3] = new Axis(Info.verticies[0], Info.verticies[3]);
    }
Пример #6
0
 public void UpdateComponent()
 {
     Vector2DFunctions.Update2DTransform(Info.NewPosition, this);
 }