//碰撞
    void Collider_enter(GameObject _collider)
    {
        My2Dphysic rigid = _collider.GetComponent <My2Dphysic>();

        //被撞到時:
        if (rigid != null && rigid.isEntity)
        {
            //能量轉移
            Vector2 _trans_force = (velocity) * mass;
            //Debug.Log(gameObject.name + " V: " + (rigid.velocity) + " enter " + _collider.name + " V: " + (velocity) + " ENTER FORCE:" + _trans_force);
            rigid.AddForce(_trans_force);
        }
    }
    void Collider_stay(GameObject _collider)
    {
        My2Dphysic rigid = _collider.GetComponent <My2Dphysic>();

        //把對方推開:
        if (rigid != null && rigid.isEntity)
        {
            Vector2 dir = transform.position - rigid.transform.position;
            //Vector2 dir = rigid.move_dir; //[bug]會滑掉

            rigid.AddForce(dir * mass * Time.deltaTime);
        }
    }
Exemple #3
0
    private void Start()
    {
        rigid = gameObject.GetComponent <My2Dphysic>();

        max_move_height = gameObject.GetComponent <SpriteRenderer>().bounds.size.y * 1.5f;//最大可移動距離

        //產生移動目標標記點:
        GameObject temp = new GameObject();

        moveGoal = Instantiate(temp, transform.position, Quaternion.identity);
        Destroy(temp);
        moveGoal.gameObject.name = gameObject.name + " move_goal";

        Set_move_goal();
    }