Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Aiming()
- {
- mousePosInScene = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, -startPos.z));
- mousePosInScene.z = startPos.z - 0.171f;
- float weaponDotProduct = Vector3.Dot((weaponAnkor.transform.position - weaponCenter.transform.position).normalized, (gameObject.transform.rotation * new Vector3(0, 0, 1)).normalized);
- float mouseDotProduct = Vector3.Dot((mousePosInScene - weaponCenter.transform.position).normalized, (gameObject.transform.rotation * new Vector3(0, 0, 1)).normalized);
- Vector3 C = new Vector3();
- Vector3 C2 = new Vector3();
- if (weaponDotProduct > maxWeaponAimingAngle)
- {
- C = mousePosInScene - headBone.transform.position;
- C2 = mousePosInScene - weaponCenter.transform.position;
- weaponDotProduct = Vector3.Dot((weaponAnkor.transform.position - weaponCenter.transform.position).normalized, (gameObject.transform.rotation * new Vector3(0, 0, 1)).normalized);
- if (weaponDotProduct < maxWeaponAimingAngle)
- {
- Vector3 B = (gameObject.transform.rotation * new Vector3(0, 0, 1)).normalized;
- Vector3 crossAB = Vector3.Cross(mousePosInScene - headBone.transform.position, B);
- C = Quaternion.AngleAxis(-30, crossAB) * B;
- crossAB = Vector3.Cross(mousePosInScene - weaponCenter.transform.position, B);
- C2 = Quaternion.AngleAxis(-30, crossAB) * B;
- }
- }
- else
- {
- Vector3 B = (gameObject.transform.rotation * new Vector3(0, 0, 1)).normalized;
- Vector3 crossAB = Vector3.Cross(mousePosInScene - headBone.transform.position, B);
- C = Quaternion.AngleAxis(-30, crossAB) * B;
- crossAB = Vector3.Cross(mousePosInScene - weaponCenter.transform.position, B);
- C2 = Quaternion.AngleAxis(-30, crossAB) * B;
- }
- if (Vector3.Angle(headBone.transform.forward, C) > weaponRotationSpeed * Time.deltaTime)
- {
- Vector3 crossAB = Vector3.Cross(headBone.transform.forward, C);
- Vector3 tempC = Quaternion.AngleAxis(weaponRotationSpeed * Time.deltaTime, crossAB) * headBone.transform.forward;
- headBone.transform.rotation = Quaternion.LookRotation(tempC);
- }
- else
- headBone.transform.rotation = Quaternion.LookRotation(C);
- if (Vector3.Angle(weaponAnkor.transform.position - weaponCenter.transform.position, C2) > weaponRotationSpeed * Time.deltaTime)
- {
- Vector3 crossAB = Vector3.Cross(weaponAnkor.transform.position - weaponCenter.transform.position, C2);
- Vector3 tempC = Quaternion.AngleAxis(weaponRotationSpeed * Time.deltaTime, crossAB) * weaponAnkor.transform.position - weaponCenter.transform.position;
- weaponCenter.transform.rotation = Quaternion.LookRotation(tempC);
- }
- else
- weaponCenter.transform.rotation = Quaternion.LookRotation(C);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement