void OnLeftMousePressed() { //Debug.Log(ChatPanel.HideCode + "OnLeftMousePressed"); int layerMask = 1 << LayerMask.NameToLayer("Monster"); if (Physics.Raycast(Camera.main.ScreenPointToRay(center), out RaycastHit hit, 5f, layerMask)) { if (Time.time - lastAttackTime > attackInterval) { Monster monster = hit.transform.GetComponent <Monster>(); float attackDamage = 1f; if (handItem != null) { attackDamage = handItem.attackDamage; } monster.health -= attackDamage; Vector3 hitForce = transform.forward + Vector3.up; monster.AddForce(hitForce * attackStrength); monster.OnHit(); if (monster.health <= 0) { SoundManager.Play3DSound("Zombie_Death", monster.gameObject); } else { SoundManager.Play3DSound("Zombie_Hurt", monster.gameObject); } //Debug.Log("monster health = " + monster.health); lastAttackTime = Time.time; } } if (WireFrameHelper.render) { handAnimator.CrossFade("hand-interact", 0); breakingTime += Time.deltaTime; NBTBlock targetGenerator = WireFrameHelper.generator; bool match = false; float speed = 1; if (handItem != null) { if (handItem.IsMatch(targetGenerator.blockMaterial)) { match = true; speed = handItem.toolSpeed; } } if (!match) { match = targetGenerator.blockMaterial == BlockMaterial.Ground || targetGenerator.blockMaterial == BlockMaterial.Wood || targetGenerator.blockMaterial == BlockMaterial.Glass; } float breakNeedTime = targetGenerator.hardness * (match ? 1.5f : 5f) / speed; if (breakNeedTime == 0) { BreakBlock(WireFrameHelper.pos); } else if (breakNeedTime > 0) { int curStage = Mathf.FloorToInt(breakingTime / (breakNeedTime / 12)); if (stage != curStage) { stage = curStage; UpdateBreakingEffect(targetGenerator, WireFrameHelper.pos, stage); } if (stage >= 10) { BreakBlock(WireFrameHelper.pos); if (handItem != null && handItem.durability != -1) { InventorySystem.items[ItemSelectPanel.curIndex].damage++; if (InventorySystem.items[ItemSelectPanel.curIndex].damage >= handItem.durability) { InventorySystem.items[ItemSelectPanel.curIndex].id = null; InventorySystem.items[ItemSelectPanel.curIndex].damage = 0; InventorySystem.items[ItemSelectPanel.curIndex].count = 0; SoundManager.Play2DSound("Player_Tool_Break"); } ItemSelectPanel.instance.RefreshUI(); } } } else { breakingTime = 0; HideBreakingEffect(); } } else { breakingTime = 0; HideBreakingEffect(); } }