void Putdown() { if (!conveyObject) { return; } GTower tower = GridManager.instance.GetTower(GetSelectLocation()); if (tower != null) { IReceiveable target = tower as IReceiveable; if (target != null) { target.Receive(conveyObject); } } else { switch (conveyObject.type) { case ProjectileType.RawMaterial: if (GridManager.instance.GetFloor(GetSelectLocation()).floorType == GFloor.FloorType.the_enemy_path) { break; } Build(GetSelectLocation(), ColorMixing.instance.AnalysisColor(conveyObject.Color)); Destroy(conveyObject.gameObject); break; case ProjectileType.BuildingMaterial: break; case ProjectileType.NormalBullet: break; case ProjectileType.BlueBullet: break; case ProjectileType.RedBullet: break; case ProjectileType.Text: Transform target = GridManager.instance.InstansiateChessAt(PrefabManager.instance.textPrefab, GetSelectLocation()).GetComponent <Transform>(); target.transform.position = target.transform.position + new Vector3(0, 0.05f, 0); target.GetComponent <TextMesh>().text = conveyObject.gameObject.GetComponent <TextMesh>().text; target.GetComponent <LevelNumber>().levelNumber = conveyObject.GetComponent <LevelNumber>().levelNumber; target.GetComponent <LevelNumber>().targetLocation = conveyObject.GetComponent <LevelNumber>().targetLocation; Destroy(conveyObject.gameObject); break; } } }
//void FixedUpdate() //{ //取消弹性 // this.GetComponent<Rigidbody>().velocity = new Vector3(0, 0, 0); //} private void Update() { ////postion锁定 //foreach (Transform _transform in GetAllChilds()) //{ // _transform.localPosition = new Vector3(0, _transform.localPosition.y, 0); //} if (playerInput.Dis > 0.02f) { //旋转 Vector3 targetForward = Vector3.Slerp(this.transform.forward, playerInput.Dright * DirTran.right + playerInput.Dup * DirTran.forward, 0.4f); this.transform.forward = targetForward; //位移 velocity = this.transform.forward * runSpeed; this.transform.position += velocity * Time.deltaTime; //location更新 location = GridManager.instance.Vector3ToVector2Int(this.transform.position); //Direction朝向更新 if (this.transform.eulerAngles.y >= 315 || this.transform.eulerAngles.y < 45) { direction = Direction.up; } else if (this.transform.eulerAngles.y >= 45 && this.transform.eulerAngles.y < 135) { direction = Direction.right; } else if (this.transform.eulerAngles.y >= 135 && this.transform.eulerAngles.y < 225) { direction = Direction.down; } else if (this.transform.eulerAngles.y >= 225 && this.transform.eulerAngles.y < 315) { direction = Direction.left; } } HighLightHandle(); if (Input.GetKeyDown(playerInput.KeyPickUp)) { GTower targetTower = GridManager.instance.GetTower(GetSelectLocation()); if (targetTower != null) { targetTower.BePickUp(this); } else { GResource targetResource = GridManager.instance.GetResources(GetSelectLocation()); if (targetResource != null) { targetResource.BePickUp(this); } } } if (Input.GetKeyDown(playerInput.KeyPutDown)) { if (conveyObject != null) { Putdown(); } } if (Input.GetKeyDown(playerInput.KeyRotation)) { Vector2Int select = GetSelectLocation(); Debug.Log(select); GChess chess = GridManager.instance.GetTower(select); if (chess) { Debug.Log(chess); if (chess.chessType == ChessType.shooterTower) { chess.GetComponent <GShooterTower>().direction = chess.GetComponent <GShooterTower>().direction.ClockwiseNext(); } } } //更新动画 animator.SetBool("isConvey", conveyObject != null); }