public Vector3 Update(Katamari katamari) { input.Set(0, 0, 0); input.x = Input.GetAxis("Horizontal"); input.z = Input.GetAxis("Vertical"); input.Normalize(); input.y = -Input.GetAxis("Rotate"); return(input); }
public void UpdatePosition(Katamari katamari) { float targetDistance = BOOM_SCALE * katamari.sphere.radius; if (targetDistance > orbitRadius) { orbitRadius = Mathf.Lerp(orbitRadius, targetDistance, Time.deltaTime); } //rotate around the global y axis and offset by our scale * radius in the boomDirection. basically it just orbits the katamari, farther the larger the katamari is. transform.position = katamari.transform.position + Quaternion.Euler(0, katamari.rotationY, 0) * boomDirection.normalized * orbitRadius; transform.LookAt(katamari.transform); }
public void Detach(Katamari katamari) { transform.parent = null; gameObject.layer = 8; if (rB == null) { rB = gameObject.AddComponent <Rigidbody>(); } rB.mass = mass; rB.isKinematic = false; rB.detectCollisions = true; //arbitrary explosion force to send stuff flying away a bit rB.AddExplosionForce(400.0f, katamari.transform.position, katamari.sphere.radius, 50.0f); collectedCollider.enabled = false; uncollectedCollider.enabled = true; StartCoroutine(DoEnableCollect()); }
public Vector3 Update(Katamari katamari) { input.Set(0, 0, 0); float leftHorizontal = Input.GetAxis("Horizontal"); float leftVertical = Input.GetAxis("Vertical"); float rightHorizontal = Input.GetAxis("RightHorizontal"); float rightVertical = Input.GetAxis("RightVertical"); //roughly based on http://strategywiki.org/wiki/Katamari_Damacy/Controls //both sticks forward -> 0, 0, 1 //both sticks back -> 0, 0, -1 //both sticks left -> -1, 0, 0 //both sticks right -> 1, 0, 0 //left forward, right back -> 0, 1, 0 //left back, right forward -> 0, -1, 0 //TODO: add boosting mechanics? quick 180? if (leftVertical > 0 && rightVertical > 0 || leftVertical < 0 && rightVertical < 0) //forward and backwards movement { input.z = (leftVertical + rightVertical) / 2.0f; } if (leftHorizontal > 0 && rightHorizontal > 0 || leftHorizontal < 0 && rightHorizontal < 0) //left and right movement { input.x = (leftHorizontal + rightHorizontal) / 2.0f; } if (leftVertical > rightVertical && leftVertical > 0) //turn right { input.y = (leftVertical - rightVertical) / 2.0f; } else if (rightVertical > leftVertical && rightVertical > 0) //turn left { input.y = -(rightVertical - leftVertical) / 2.0f; } return(input); }
public void Init(Katamari katamari) { orbitRadius = BOOM_SCALE * katamari.sphere.radius; }
public void Attach(Katamari katamari) { uncollectedCollider.enabled = false; collectedCollider.enabled = true; }