private void Control(bool right) //歩行操作 { if (!justGravity) { rotatingPosition += right ? walkSpeed : -walkSpeed; float theta = (rotator.way + rotatingPosition) / 2 * Mathf.PI; transform.position = new Vector3(rotator.GetOriginX() + Mathf.Cos(theta) * rotatingSize, rotator.GetOriginY() + Mathf.Sin(theta) * rotatingSize); transform.rotation = Quaternion.Euler(0f, 0f, (rotatingPosition + rotator.way + 1f) * 90f); if (rotatingPosition >= 1f) { way = rotator.GetWayR(); transform.rotation = Quaternion.Euler(0f, 0f, 90f * way); UnsetRotator(); } if (rotatingPosition <= 0f) { way = rotator.GetWayL(); transform.rotation = Quaternion.Euler(0f, 0f, 90f * way); UnsetRotator(); } } if (justGravity) { transform.Translate(right ? walkSpeed : -walkSpeed, 0, 0); } }
public void SetRotator(RotatorScript r) //ローテーターをセット { rotator = r; justGravity = false; rotatingSize = way % 2 == 0 ? Mathf.Abs(rotator.GetOriginY() - transform.position.y) : Mathf.Abs(rotator.GetOriginX() - transform.position.x); rotatingPosition = rotator.GetWayL() == way ? 0f : 1f; way = rotator.GetWayL(); }