diff --git a/Assets/Prefabs/WedgePrefab00.prefab b/Assets/Prefabs/WedgePrefab00.prefab new file mode 100644 index 0000000..f46b5df --- /dev/null +++ b/Assets/Prefabs/WedgePrefab00.prefab @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &152938 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 427432} + - 212: {fileID: 21228928} + m_Layer: 0 + m_Name: WedgePrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &170328 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 411762} + m_Layer: 0 + m_Name: WedgePrefab00 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &411762 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170328} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 427432} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!4 &427432 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152938} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.975, y: 0.004, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 411762} + m_RootOrder: 0 +--- !u!212 &21228928 +SpriteRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152938} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 0 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 967af79000cf76b4287a112b4e30cbea, type: 3} + m_Color: {r: 0.78676474, g: 0.12727074, b: 0.12727074, a: 1} + m_FlipX: 0 + m_FlipY: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 170328} + m_IsPrefabParent: 1 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); } }