//碰撞 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); } }
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(); }