diff --git a/Assets/Prefabs/WedgePrefab00.prefab b/Assets/Prefabs/WedgePrefab00.prefab
new file mode 100644
index 0000000..479b5bd
Binary files /dev/null and b/Assets/Prefabs/WedgePrefab00.prefab differ
diff --git a/Assets/Prefabs/WedgePrefab00.prefab.meta b/Assets/Prefabs/WedgePrefab00.prefab.meta
new file mode 100644
index 0000000..aeeafff
--- /dev/null
+++ b/Assets/Prefabs/WedgePrefab00.prefab.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0b78da08dfa398840862539a74cc2377
+timeCreated: 1460115450
+licenseType: Pro
+NativeFormatImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/PlanetManager.cs b/Assets/Scripts/PlanetManager.cs
index c0fdb53..37ced3d 100644
--- a/Assets/Scripts/PlanetManager.cs
+++ b/Assets/Scripts/PlanetManager.cs
@@ -26,10 +26,10 @@ public class PlanetManager : MonoBehaviour
//float angle = i * Mathf.PI * 2 / NbCartiers * 360;
- var wedgePos = GetPlanetCoordinatesFromPlayerXY(debutAngleTheta, 0);
- wedgePos.x -= 8/ Mathf.PI * Mathf.Cos(debutAngleTheta * Mathf.PI / 180);
- wedgePos.y -= 8/ Mathf.PI * Mathf.Sin(debutAngleTheta * Mathf.PI / 180);
- var obj = Instantiate(WedgePrefab, wedgePos, Quaternion.Euler(0, 0, debutAngleTheta));
+ //var wedgePos = GetPlanetCoordinatesFromPlayerXY(debutAngleTheta, 0);
+ // wedgePos.x -= Mathf.Cos(debutAngleTheta * Mathf.PI / 180);
+ //wedgePos.y -= Mathf.Sin(debutAngleTheta * Mathf.PI / 180);
+ var obj = Instantiate(WedgePrefab, new Vector3(0.0f,0.0f, 0.0f), Quaternion.Euler(0, 0, debutAngleTheta));
obj.name = "wedge_" + i;
w.sprite = GameObject.Find(obj.name);
wedges.Add(w); //pushes at end.
@@ -54,56 +54,79 @@ public class PlanetManager : MonoBehaviour
}
-
public void PushWedge(float thetaPlayerX)
{
- var index = GetWedgeIndex(thetaPlayerX);
- var w = wedges[index];
+ var index = GetWedgeIndex(thetaPlayerX);
+ var w = wedges[index];
-
-
- w.offset = w.offset - 0.5f;
- if (w.offset < -1.0f)
- w.offset = -1.0f;
-
- var angle = w.tMin; //w.tMax - TailleCartiersEnDegres/2;
-
- var normalPos = GetPlanetCoordinatesFromPlayerXY(angle, 0);
- normalPos.x -= 8 / Mathf.PI * Mathf.Cos(angle * Mathf.PI / 180);
- normalPos.y -= 8 / Mathf.PI * Mathf.Sin(angle * Mathf.PI / 180);
-
- var wedgePos = GetPlanetCoordinatesFromPlayerXY(angle, 0);
- wedgePos.x -= 8 / Mathf.PI * Mathf.Cos(angle * Mathf.PI / 180) - 50 * w.offset * Mathf.Cos(angle * Mathf.PI / 180);
- wedgePos.y -= 8 / Mathf.PI * Mathf.Sin(angle * Mathf.PI / 180) - 50 * w.offset * Mathf.Sin(angle * Mathf.PI / 180);
-
-
- w.sprite.transform.position = Vector3.Lerp(normalPos, wedgePos, Time.deltaTime);
-
- ///push back l'opposée
- var indexOppose = GetWedgeOpposé(index);
- var v = wedges[indexOppose];
-
- v.offset = v.offset + 0.5f;
- if (v.offset > 1.0f)
- v.offset = 1.0f;
-
- angle = v.tMin; //w.tMax - TailleCartiersEnDegres/2;
-
- normalPos = GetPlanetCoordinatesFromPlayerXY(angle, 0);
- normalPos.x -= 8 / Mathf.PI * Mathf.Cos(angle * Mathf.PI / 180);
- normalPos.y -= 8 / Mathf.PI * Mathf.Sin(angle * Mathf.PI / 180);
-
- wedgePos = GetPlanetCoordinatesFromPlayerXY(angle, 0);
- wedgePos.x -= 8 / Mathf.PI * Mathf.Cos(angle * Mathf.PI / 180) - 50 * v.offset * Mathf.Cos(angle * Mathf.PI / 180);
- wedgePos.y -= 8 / Mathf.PI * Mathf.Sin(angle * Mathf.PI / 180) - 50 * v.offset * Mathf.Sin(angle * Mathf.PI / 180);
+ w.offset = w.offset - 0.25f;
+ if (w.offset < 0.5f)
+ w.offset = 0.5f;
- v.sprite.transform.position = Vector3.Lerp(normalPos, wedgePos, Time.deltaTime);
+ w.sprite.transform.localScale = new Vector3(w.offset, w.offset, 1);
+ //push back l'opposée
+ var indexOppose = GetWedgeOpposé(index);
+ var v = wedges[indexOppose];
+ v.offset = v.offset + 0.25f;
+ if (v.offset > 1.5f)
+ v.offset = 1.5f;
+
+ v.sprite.transform.localScale = new Vector3(v.offset, v.offset, 1);
}
+ //public void PushWedge(float thetaPlayerX)
+ //{
+ // var index = GetWedgeIndex(thetaPlayerX);
+ // var w = wedges[index];
+
+
+
+ // w.offset = w.offset - 0.5f;
+ // if (w.offset < -1.0f)
+ // w.offset = -1.0f;
+
+ // var angle = w.tMin; //w.tMax - TailleCartiersEnDegres/2;
+
+ // var normalPos = GetPlanetCoordinatesFromPlayerXY(angle, 0);
+ // normalPos.x -= Mathf.Cos(angle * Mathf.PI / 180);
+ // normalPos.y -= Mathf.Sin(angle * Mathf.PI / 180);
+
+ // var wedgePos = GetPlanetCoordinatesFromPlayerXY(angle, 0);
+ // wedgePos.x -= Mathf.Cos(angle * Mathf.PI / 180) - 50 * w.offset * Mathf.Cos(angle * Mathf.PI / 180);
+ // wedgePos.y -= Mathf.Sin(angle * Mathf.PI / 180) - 50 * w.offset * Mathf.Sin(angle * Mathf.PI / 180);
+
+
+ // w.sprite.transform.position = Vector3.Lerp(normalPos, wedgePos, Time.deltaTime);
+
+ // ///push back l'opposée
+ // var indexOppose = GetWedgeOpposé(index);
+ // var v = wedges[indexOppose];
+
+ // v.offset = v.offset + 0.5f;
+ // if (v.offset > 1.0f)
+ // v.offset = 1.0f;
+
+ // angle = v.tMin; //w.tMax - TailleCartiersEnDegres/2;
+
+ // normalPos = GetPlanetCoordinatesFromPlayerXY(angle, 0);
+ // normalPos.x -= Mathf.Cos(angle * Mathf.PI / 180);
+ // normalPos.y -= Mathf.Sin(angle * Mathf.PI / 180);
+
+ // wedgePos = GetPlanetCoordinatesFromPlayerXY(angle, 0);
+ // wedgePos.x -= Mathf.Cos(angle * Mathf.PI / 180) - 50 * v.offset * Mathf.Cos(angle * Mathf.PI / 180);
+ // wedgePos.y -= Mathf.Sin(angle * Mathf.PI / 180) - 50 * v.offset * Mathf.Sin(angle * Mathf.PI / 180);
+
+
+ // v.sprite.transform.position = Vector3.Lerp(normalPos, wedgePos, Time.deltaTime);
+
+
+ //}
+
+
///
/// Radius sphere est scale/2
///
@@ -113,14 +136,26 @@ public class PlanetManager : MonoBehaviour
return gameObject.transform.localScale.x / 2.0f;
}
+ ///
+ /// Radius sphere est scale/2
+ ///
+ ///
+ public float GetPlanetRadius(float thetaPlayerX)
+ {
+ var wedge = GetWedgeFromTheta(thetaPlayerX);
+ return GetPlanetRadius() * wedge.offset;
+ }
+
+
public Vector3 GetPlanetCoordinatesFromPlayerXY(float playerLocalX, float playerLocalY)
{
var theta = playerLocalX;
- var x = GetPlanetRadius() * Math.Cos(theta * Math.PI / 180);
- var y = GetPlanetRadius() * Math.Sin(theta * Math.PI / 180) + playerLocalY;
+ var wedgeRadius = GetPlanetRadius(playerLocalX);
+ var x = wedgeRadius * Mathf.Cos(theta * Mathf.PI / 180);
+ var y = wedgeRadius * Mathf.Sin(theta * Mathf.PI / 180) + playerLocalY;
- return new Vector3((float)x, (float)y, 0);
+ return new Vector3(x, y, 0);
}
@@ -160,7 +195,7 @@ public class PlanetManager : MonoBehaviour
///
public class Wedge
{
- public float offset = 0; //valeurs entre -1 et 1; -1 étant renfoncé, 0 position normale, et 1 vers l'extérieur
+ public float offset = 1.0f; //valeurs entre -1 et 1; -1 étant renfoncé, 0 position normale, et 1 vers l'extérieur
public float tMin = 0; //theta min et theta max : angle thetat de début et fin du cartier;
public float tMax = 0;
diff --git a/Assets/Scripts/testRotate.cs b/Assets/Scripts/testRotate.cs
index 4560318..55bbf88 100644
--- a/Assets/Scripts/testRotate.cs
+++ b/Assets/Scripts/testRotate.cs
@@ -60,16 +60,21 @@ public class testRotate : MonoBehaviour {
{
var speed = 13.2f;
var theta = Time.realtimeSinceStartup * speed % 360.0f; // Position X du player = angle theta
- var r = 4.5f; //sphereradius
- // XY coordinates
- var x = r * Mathf.Cos(theta * Mathf.PI / 180);
- var y = r * Mathf.Sin(theta * Mathf.PI / 180); // + y0 du player
+ var planet = GameObject.Find("Planet").gameObject.GetComponent();
+
+ // var r = planet.GetPlanetRadius(theta);
+
+
+ // XY coordinates
+ // var x = r * Mathf.Cos(theta * Mathf.PI / 180);
+ // var y = r * Mathf.Sin(theta * Mathf.PI / 180); // + y0 du player
var player = GameObject.Find("CubePlayer").gameObject;
- player.transform.position = Vector3.Lerp(player.transform.position, new Vector3(x, y, 0 ), Time.deltaTime);
-
+ //player.transform.position = Vector3.Lerp(player.transform.position, new Vector3(x, y, 0 ), Time.deltaTime);
+ player.transform.position = Vector3.Lerp(player.transform.position,
+ planet.GetPlanetCoordinatesFromPlayerXY(theta, 0f), Time.fixedDeltaTime);
}
}