public bool AutoVertical(Transform HandOTarget, Transform HandTarget, Arm oneArm) { Vector3 neckDelta = Vector3.zero; Vector3 ToTarget = HandOTarget.position - oneArm.upperArmStart.position; float Over = ToTarget.magnitude - oneArm.length; if (Over > 0) { neckDelta = ToTarget.normalized * Over; } float dY = neckStart.position.y + neckDelta.y - neck.position.y; if (hips.position.y + dY < hipsStart.position.y) { hips.Translate(0, dY, 0, Space.World); } else if (hips.position.y + dY > hipsStart.position.y) { hips.position = hipsStart.position; } oneArm.Calculate(HandTarget); return(hips.position.y < hipsStart.position.y); }
public float AutoHorizontal(Transform HandOTarget, Transform HandTarget, Arm oneArm, Transform opositeUpperArm) { float bendAngle = 0; Vector3 torsoTarget = Vector3.zero; Vector3 dShoulderNeck = (opositeUpperArm.position - oneArm.upperArm.position) / 2; Vector3 ToTarget = HandOTarget.position - oneArm.upperArmStart.position; float Over = ToTarget.magnitude - oneArm.length; if (Over > 0) { torsoTarget = HandOTarget.position + dShoulderNeck; bendAngle = BendAngle(torsoTarget, oneArm); // arm should be left or right spine.rotation = spineStartRotation * Quaternion.AngleAxis(bendAngle, spineAxis); } else { spine.rotation = spineStartRotation; } oneArm.Calculate(HandTarget); return(bendAngle); }
public bool AutoVertical(Transform HandOTarget, Transform HandTarget, Arm oneArm) { Vector3 neckDelta = Vector3.zero; Vector3 ToTarget = HandOTarget.position - oneArm.upperArmStart.position; float Over = ToTarget.magnitude - oneArm.length; if (Over > 0) neckDelta = ToTarget.normalized * Over; float dY = neckStart.position.y + neckDelta.y - neck.position.y; if (hips.position.y + dY < hipsStart.position.y) { hips.Translate(0, dY, 0, Space.World); } else if (hips.position.y + dY > hipsStart.position.y) { hips.position = hipsStart.position; } oneArm.Calculate(HandTarget); return (hips.position.y < hipsStart.position.y); }
public float AutoHorizontal(Transform HandOTarget, Transform HandTarget, Arm oneArm, Transform opositeUpperArm) { float bendAngle = 0; Vector3 torsoTarget = Vector3.zero; Vector3 dShoulderNeck = (opositeUpperArm.position - oneArm.upperArm.position) / 2; Vector3 ToTarget = HandOTarget.position - oneArm.upperArmStart.position; float Over = ToTarget.magnitude - oneArm.length; if (Over > 0) { torsoTarget = HandOTarget.position + dShoulderNeck; bendAngle = BendAngle(torsoTarget, oneArm); // arm should be left or right spine.rotation = spineStartRotation * Quaternion.AngleAxis(bendAngle, spineAxis); } else spine.rotation = spineStartRotation; oneArm.Calculate(HandTarget); return bendAngle; }