This commit is contained in:
Jean-Sébastien Gervais 2016-04-08 22:34:39 -04:00
parent f6269e20bb
commit 2d63fef4a0
12 changed files with 681 additions and 336 deletions

View File

@ -57,8 +57,9 @@ GameObject:
- 4: {fileID: 403646}
- 114: {fileID: 11494368}
- 114: {fileID: 11434752}
- 54: {fileID: 5402556}
- 136: {fileID: 13683032}
- 54: {fileID: 5462614}
- 136: {fileID: 13672180}
m_Layer: 0
m_Name: Character
m_TagString: Player
@ -117,7 +118,7 @@ Transform:
- {fileID: 403646}
m_Father: {fileID: 0}
m_RootOrder: 0
--- !u!54 &5402556
--- !u!54 &5462614
Rigidbody:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
@ -130,7 +131,7 @@ Rigidbody:
m_UseGravity: 0
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_Constraints: 120
m_CollisionDetection: 0
--- !u!114 &11434752
MonoBehaviour:
@ -164,7 +165,21 @@ MonoBehaviour:
JumpSpeed: 5
Gravity: 15
Speed: 5
EjectSpeed: 20
planet: {fileID: 0}
--- !u!136 &13672180
CapsuleCollider:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 170392}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
m_Radius: 0.77
m_Height: 3.37
m_Direction: 1
m_Center: {x: -0.03, y: 0.35, z: 0}
--- !u!136 &13683032
CapsuleCollider:
m_ObjectHideFlags: 1

View File

@ -18,15 +18,13 @@ public class Asteroid : MonoBehaviour
public void Start()
{
speed = Random.Range(1.8F, 3F);
// print(speed);
center = new Vector3(0, 0);
if (RandomRotationSpeed)
rotationSpeed = 10 * UnityEngine.Random.Range(0.25f, 5f);
rotationDirection = (Mathf.Floor(UnityEngine.Random.Range(0.0f, 1.99f))*2 - 1);
rotationDirection = (Mathf.Floor(UnityEngine.Random.Range(0.0f, 1.99f)) * 2 - 1);
}
// Update is called once per frame

View File

@ -68,10 +68,11 @@ public class AsteroidSpawner : TimerFunctionsClass
var angle = ( 360.0f + (((playerTheta * 180)) / Mathf.PI)) % 360; ///TODO : a changer pour p.theta
print("angle:" + angle);
var AsteroidType = Mathf.RoundToInt(Mathf.Floor(UnityEngine.Random.Range(0f, 3.999f)));
var AsteroidType = Mathf.RoundToInt(Mathf.Floor(UnityEngine.Random.Range(0f, 3.999f)));
float direction = (Mathf.Floor(UnityEngine.Random.Range(0.0f, 1.99f)) * 2 - 1);
Instantiate(AsteroidPrefabTypes[AsteroidType],
planet.GetPlanetCoordinatesFromPlayerXY(angle, UnityEngine.Random.Range(10f,15f)),
direction*planet.GetPlanetCoordinatesFromPlayerXY(angle, UnityEngine.Random.Range(10f,15f)),
Quaternion.identity);
}

View File

@ -1,15 +1,17 @@
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AstronautAnimator))]
public class Astronaut : MonoBehaviour {
private enum AstronautState
private AstronautAnimator _astronautAnimator;
public enum AstronautState
{
Idle, Walking, Jumping, Dashing, Ejecting, Dead
}
public GameObject Rotator;
public GameObject SpriteWalk;
public SpriteRenderer SpriteWalk;
public GameObject SpriteDash;
public float Width;
@ -19,11 +21,13 @@ public class Astronaut : MonoBehaviour {
public float JumpSpeed;
public float Gravity;
public float Speed;
public float EjectSpeed;
//public float DashSpeed;
public PlanetManager planet;
private AstronautState _state;
private AstronautState State
public AstronautState State
{
get
{
@ -37,19 +41,20 @@ public class Astronaut : MonoBehaviour {
if (oldState == _state) return;
if (oldState == AstronautState.Dashing)
{
SpriteWalk.SetActive(false);
SpriteDash.SetActive(true);
{
SpriteWalk.gameObject.SetActive(false);
SpriteDash.gameObject.SetActive(true);
}
else
{
SpriteWalk.SetActive(true);
SpriteDash.SetActive(false);
{
SpriteWalk.gameObject.SetActive(true);
SpriteDash.gameObject.SetActive(false);
}
/*if (_state == AstronautState.Walking)
{
StartCoroutine(WalkingStance());
//StartCoroutine(WalkingStance());
_astronautAnimator.Walk();
}*/
}
}
@ -62,12 +67,18 @@ public class Astronaut : MonoBehaviour {
private float walkTime = 0;
private int nextStep = 1;
// Use this for initialization
public void Start () {
// Use this for initialization
void Start()
{
_astronautAnimator = GetComponent<AstronautAnimator>();
_astronautAnimator.aspi = this;
State = AstronautState.Idle;
if (!planet)
{
planet = FindObjectOfType<PlanetManager>();
}
State = AstronautState.Idle;
//Debug.Log(planet.GetPlanetRadius(0));
theta = 0;
@ -111,15 +122,27 @@ public class Astronaut : MonoBehaviour {
if (!grounded)
{
height += vSpeed * delta;
vSpeed -= Gravity * delta;
if (State != AstronautState.Ejecting)
vSpeed -= Gravity * delta;
else
vSpeed *= 0.98f;
}
float radius = GetGroundRadius();
if (grounded = (height <= radius))
{
/*if (State == AstronautState.Dashing)
{
planet.PushWedge(Repeat(theta,360));
State = AstronautState.Idle;
//TODO_SR Create dash impact here
}*/
height = radius;
if (State == AstronautState.Jumping)
State = AstronautState.Idle;
vSpeed = 0f;
}
UpdatePosition();
@ -135,8 +158,7 @@ public class Astronaut : MonoBehaviour {
{
walkTime += Time.deltaTime / StepTime;
Vector3 rotation = transform.rotation.eulerAngles;
rotation.z = Mathf.Sin(walkTime * Mathf.PI)*50;
transform.rotation = Quaternion.Euler(rotation);
rotation.z = Mathf.Sin(walkTime * Mathf.PI)*50; transform.rotation = Quaternion.Euler(rotation);
}*/
/*
@ -199,15 +221,20 @@ public class Astronaut : MonoBehaviour {
}
if (State == AstronautState.Dashing && grounded)
{
//TODO arreter mouvelement lateral
//TODO arreter mouvement lateral
State=AstronautState.Idle;
}
}
public void Jump()
{
Debug.Log("Jump!");
if (State >= AstronautState.Ejecting)
return;
_astronautAnimator.Jump();
if (State == AstronautState.Jumping)
{
Dash();
@ -215,6 +242,7 @@ public class Astronaut : MonoBehaviour {
return;
}
if (!grounded) return;
vSpeed = JumpSpeed;
grounded = false;
@ -225,13 +253,23 @@ public class Astronaut : MonoBehaviour {
{
if (Time.time < DashTime + lastDashTime)
return;
return;
if (_state >= AstronautState.Ejecting)
return;
if (State >= AstronautState.Ejecting)
return;
lastDashTime = Time.time;
planet.PushWedge(this.theta);
//State = AstronautState.Dashing;
//vSpeed = -DashSpeed;
}
public void Eject()
{
State = AstronautState.Ejecting;
vSpeed = EjectSpeed;
grounded = false;
}
/// <summary>
@ -242,31 +280,12 @@ public class Astronaut : MonoBehaviour {
print("Stunned");
}
public void OnGUI()
{
if (GUI.Button(new Rect(10, 10, 150, 50), State.ToString()))
{
Debug.Log("Clicked the button with an image");
Eject();
}
}
/*IEnumerator WalkingStance()
{
Debug.Log("walking stance");
walkTime += Time.deltaTime / StepTime;
while (State <= AstronautState.Walking || walkTime <= 1f)
{
Vector3 rotation = transform.rotation.eulerAngles;
rotation.z = Mathf.Sin(walkTime*Mathf.PI)*50;
// print("rotation " + rotation);
transform.rotation = Quaternion.Euler(rotation);
yield return null;
}
walkTime = 0f;
if(State == AstronautState.Walking)
{
StartCoroutine("WalkingStance");
}
}*/
}

View File

@ -0,0 +1,75 @@
using UnityEngine;
using System.Collections;
public class AstronautAnimator : MonoBehaviour {
//init
public Astronaut aspi;
public float WalkAnimSpeed;
public float WalkAnimAngle;
public float EjectSpinSpeed;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void Jump()
{
aspi.SpriteWalk.gameObject.SetActive(false);
aspi.SpriteDash.gameObject.SetActive(true);
}
public void Land()
{
aspi.SpriteWalk.gameObject.SetActive(true);
aspi.SpriteDash.gameObject.SetActive(false);
}
public void Walk()
{
StartCoroutine(Rotate());
}
public void Eject()
{
StartCoroutine(Spin());
}
IEnumerator Spin()
{
for (float i = 0f; i < 3000f; i += Time.deltaTime * EjectSpinSpeed)
{
transform.rotation = Quaternion.Euler(0, 0, i);
yield return null;
}
}
IEnumerator Rotate()
{
for (float i = 0.5f; i < 2.5f; i+= Time.deltaTime*WalkAnimSpeed)
{
/*int roundDown = 10;
//0.5, 1.5 et 2.5
if (Mathf.Floor(i * roundDown) == roundDown || Mathf.Floor(i * roundDown) == 2 * roundDown)
{
print(i * roundDown + " " + Mathf.Floor(i * roundDown));
aspi.SpriteWalk.flipX = !aspi.SpriteWalk.flipX;
}*/
float position = Mathf.PingPong(i, 1f);
transform.rotation = Quaternion.Euler(0, 0, (position - 0.5f) * WalkAnimAngle * 2);
yield return null;
}
if (aspi.State == Astronaut.AstronautState.Walking)
{
StartCoroutine(Rotate());
}
yield return null;
}
}

View File

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 77462b2431858f84b9bc2d055c2f4d45
timeCreated: 1460135550
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,70 @@
using UnityEngine;
using System.Collections;
using InputHandler;
[RequireComponent(typeof(Astronaut))]
public class AstronautController2 : MonoBehaviour
{
private Astronaut _astronaut;
public int PlayerNumber;
// Use this for initialization
void Start()
{
InputManager.Instance.PushActiveContext("Gameplay", PlayerNumber);
InputManager.Instance.AddCallback(PlayerNumber, HandlePlayerAxis);
InputManager.Instance.AddCallback(PlayerNumber, HandlePlayerButtons);
_astronaut = GetComponent<Astronaut>();
}
private void HandlePlayerAxis(MappedInput input)
{
if (this == null) return;
// movement
float xValue = 0f;
if (input.Ranges.ContainsKey("MoveLeft"))
{
xValue = -input.Ranges["MoveLeft"];
}
else if (input.Ranges.ContainsKey("MoveRight"))
{
xValue = input.Ranges["MoveRight"];
}
float yValue = 0f;
if (input.Ranges.ContainsKey("MoveUp"))
{
yValue = input.Ranges["MoveUp"];
}
else if (input.Ranges.ContainsKey("MoveDown"))
{
yValue = -input.Ranges["MoveDown"];
}
_astronaut.Move(xValue, yValue);
if (input.Ranges.ContainsKey("Dash"))
{
if (input.Ranges["Dash"] > 0.8f)
_astronaut.Dash();
}
}
private void HandlePlayerButtons(MappedInput input)
{
if (this == null) return;
if (input.Actions.Contains("Jump"))
{
_astronaut.Jump();
}
}
}

View File

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: d7792093ffcd687448b5875a8ce0cc32
timeCreated: 1460133633
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,250 +1,238 @@
using System;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class PlanetManager : MonoBehaviour
{
public int NbCartiers = 10;
public float TailleCartiersEnDegres = 0; //radian -> valeurs 0 a 360
public float CartierResetRatioSpeedFactor = 0.23f; //Entre 0.05 et 1 ou plus on aime que ca restore lentement, randomnly
public bool CartierResetRatioSpeedRandomize = true;
public bool CartierResetOverTime = true;
public float CartierMinRatio = 0.4f;
public float CartierMaxRatio = 2.0f;
public float CartierStepSize = 0.25f;
public GameObject WedgePrefab = null;
public List<Wedge> wedges = new List<Wedge>();
// Use this for initialization
public void Awake () {
TailleCartiersEnDegres = 360.0f / NbCartiers;
for(int i = 0; i < NbCartiers; i++)
{
float debutAngleTheta = i* TailleCartiersEnDegres;
var w = new Wedge() {tMin = debutAngleTheta, tMax = debutAngleTheta + TailleCartiersEnDegres};
//float angle = i * Mathf.PI * 2 / NbCartiers * 360;
//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.
}
}
// Update is called once per frame
public void Update () {
}
public void FixedUpdate()
{
if (!this.CartierResetOverTime) return;
//Ramener les plateforme vers leur position initiale 0;
foreach (var w in wedges)
{
if (w.offset <= 1.05f && w.offset >= 0.95f)
{
w.offset = 1.0f;
}
else if (w.offset > 1.0f)
{
if (!CartierResetRatioSpeedRandomize)
{
w.offset -= 0.005f*CartierResetRatioSpeedFactor;
}
else
{
w.offset -= 0.005f*CartierResetRatioSpeedFactor * UnityEngine.Random.Range(-0.5f, 2f);
}
}
else if (w.offset < 1.0f)
{
if (!CartierResetRatioSpeedRandomize)
{
w.offset += 0.005f*CartierResetRatioSpeedFactor;
}
else
{
w.offset += 0.005f*CartierResetRatioSpeedFactor*UnityEngine.Random.Range(0f, 3f);
}
}
w.sprite.transform.localScale = new Vector3(w.offset, w.offset,1.0f);
}
//TODO_SR For each player
}
public void PushWedge(float thetaPlayerX)
{
var index = GetWedgeIndex(thetaPlayerX);
var w = wedges[index];
w.offset = w.offset - CartierStepSize;
if (w.offset < CartierMinRatio)
w.offset = CartierMinRatio;
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 + CartierStepSize;
if (v.offset > CartierMaxRatio)
v.offset = CartierMaxRatio;
v.sprite.transform.localScale = new Vector3(v.offset, v.offset, 1);
// call fill gauge after every hit.
var earthQuakeGauge = FindObjectOfType<Earthquake>();
earthQuakeGauge.FillGauge();
}
/// <summary>
/// On a earthquake, everything expands by a step
/// </summary>
public void CallEarthQuake()
{
foreach (var w in wedges)
{
w.offset = w.offset + CartierStepSize;
if (w.offset > CartierMaxRatio)
w.offset = CartierMaxRatio;
}
}
//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);
//}
/// <summary>
/// Radius sphere est scale/2
/// </summary>
/// <returns></returns>
public float GetPlanetRadius()
{
return gameObject.transform.localScale.x / 2.0f;
}
/// <summary>
/// Radius sphere est scale/2
/// </summary>
/// <returns></returns>
public float GetPlanetRadius(float thetaPlayerX)
{
var wedge = GetWedgeFromTheta(thetaPlayerX);
return GetPlanetRadius() * wedge.offset;
}
public Vector3 GetPlanetCoordinatesFromPlayerXY(float playerLocalX, float playerLocalY)
{
var theta = playerLocalX;
var wedgeRadius = GetPlanetRadius(playerLocalX) + playerLocalY;
var x = wedgeRadius * Mathf.Cos(theta * Mathf.PI / 180);
var y = wedgeRadius * Mathf.Sin(theta * Mathf.PI / 180) ;
return new Vector3(x, y, 0);
}
/// <summary>
/// retourn le no de plateforme
/// </summary>
/// <param name="thetaPlayerX"></param>
public int GetWedgeIndex(float thetaPlayerX)
{
return (int)Math.Floor(thetaPlayerX / TailleCartiersEnDegres);
}
/// <summary>
///
/// </summary>
/// <param name="wedgeIndex"></param>
/// <returns></returns>
public int GetWedgeOpposé(int wedgeIndex)
{
//(i + 5) % 10 => [0,9]
return (wedgeIndex + NbCartiers / 2) % (NbCartiers);
}
/// <summary>
/// retourne l'objet interne
/// </summary>
/// <param name="thetaPlayerX"></param>
/// <returns></returns>
public Wedge GetWedgeFromTheta(float thetaPlayerX)
{
return wedges[GetWedgeIndex(thetaPlayerX % 360)];
}
/// <summary>
/// Représente une plateforme qui bouge.
/// </summary>
public class Wedge
{
public float offset = 1.0f; //valeurs entre minRatio et maxRatio; < 1 étant renfoncé, 1 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;
public GameObject sprite; //sprite et collider 2D
}
}
using System;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class PlanetManager : MonoBehaviour
{
public int NbCartiers = 10;
public float TailleCartiersEnDegres = 0; //radian -> valeurs 0 a 360
public float CartierResetRatioSpeedFactor = 0.23f; //Entre 0.05 et 1 ou plus on aime que ca restore lentement, randomnly
public bool CartierResetRatioSpeedRandomize = true;
public bool CartierResetOverTime = true;
public float CartierMinRatio = 0.4f;
public float CartierMaxRatio = 2.0f;
public float CartierStepSize = 0.25f;
public GameObject WedgePrefab = null;
public List<Wedge> wedges = new List<Wedge>();
// Use this for initialization
public void Awake () {
TailleCartiersEnDegres = 360.0f / NbCartiers;
for(int i = 0; i < NbCartiers; i++)
{
float debutAngleTheta = i* TailleCartiersEnDegres;
var w = new Wedge() {tMin = debutAngleTheta, tMax = debutAngleTheta + TailleCartiersEnDegres};
//float angle = i * Mathf.PI * 2 / NbCartiers * 360;
//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.
}
}
// Update is called once per frame
public void Update () {
}
public void FixedUpdate()
{
if (!this.CartierResetOverTime) return;
//Ramener les plateforme vers leur position initiale 0;
foreach (var w in wedges)
{
if (w.offset <= 1.05f && w.offset >= 0.95f)
{
w.offset = 1.0f;
}
else if (w.offset > 1.0f)
{
if (!CartierResetRatioSpeedRandomize)
{
w.offset -= 0.005f*CartierResetRatioSpeedFactor;
}
else
{
w.offset -= 0.005f*CartierResetRatioSpeedFactor * UnityEngine.Random.Range(-0.5f, 2f);
}
}
else if (w.offset < 1.0f)
{
if (!CartierResetRatioSpeedRandomize)
{
w.offset += 0.005f*CartierResetRatioSpeedFactor;
}
else
{
w.offset += 0.005f*CartierResetRatioSpeedFactor*UnityEngine.Random.Range(0f, 3f);
}
}
w.sprite.transform.localScale = new Vector3(w.offset, w.offset,1.0f);
}
//TODO_SR For each player
}
public void PushWedge(float thetaPlayerX)
{
var index = GetWedgeIndex(thetaPlayerX);
var w = wedges[index];
w.offset = w.offset - CartierStepSize;
if (w.offset < CartierMinRatio)
w.offset = CartierMinRatio;
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 + CartierStepSize;
if (v.offset > CartierMaxRatio)
v.offset = CartierMaxRatio;
v.sprite.transform.localScale = new Vector3(v.offset, v.offset, 1);
// call fill gauge after every hit.
var earthQuakeGauge = FindObjectOfType<Earthquake>();
earthQuakeGauge.FillGauge();
}
/// <summary>
/// On a earthquake, everything expands by a step
/// </summary>
public void CallEarthQuake()
{
foreach (var w in wedges)
{
w.offset = w.offset + CartierStepSize;
if (w.offset > CartierMaxRatio)
w.offset = CartierMaxRatio;
}
}
//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);
//}
/// <summary>
/// Radius sphere est scale/2
/// </summary>
/// <returns></returns>
public float GetPlanetRadius()
{
return gameObject.transform.localScale.x / 2.0f;
}
/// <summary>
/// Radius sphere est scale/2
/// </summary>
/// <returns></returns>
public float GetPlanetRadius(float thetaPlayerX)
{
var wedge = GetWedgeFromTheta(thetaPlayerX);
return GetPlanetRadius() * wedge.offset;
}
public Vector3 GetPlanetCoordinatesFromPlayerXY(float playerLocalX, float playerLocalY)
{
var theta = playerLocalX;
var wedgeRadius = GetPlanetRadius(playerLocalX) + playerLocalY;
var x = wedgeRadius * Mathf.Cos(theta * Mathf.PI / 180);
var y = wedgeRadius * Mathf.Sin(theta * Mathf.PI / 180) ;
return new Vector3(x, y, 0);
}
/// <summary>
/// retourn le no de plateforme
/// </summary>
/// <param name="thetaPlayerX"></param>
public int GetWedgeIndex(float thetaPlayerX)
{
return (int)Math.Floor(thetaPlayerX / TailleCartiersEnDegres);
}
/// <summary>
///
/// </summary>
/// <param name="wedgeIndex"></param>
/// <returns></returns>
public int GetWedgeOpposé(int wedgeIndex)
{
//(i + 5) % 10 => [0,9]
return (wedgeIndex + NbCartiers / 2) % (NbCartiers);
}
/// <summary>
/// retourne l'objet interne
/// </summary>
/// <param name="thetaPlayerX"></param>
/// <returns></returns>
public Wedge GetWedgeFromTheta(float thetaPlayerX)
{
return wedges[GetWedgeIndex(thetaPlayerX % 360)];
}
/// <summary>
/// Représente une plateforme qui bouge.
/// </summary>
public class Wedge
{
public float offset = 1.0f; //valeurs entre minRatio et maxRatio; < 1 étant renfoncé, 1 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;
public GameObject sprite; //sprite et collider 2D
}
}

View File

@ -572,6 +572,14 @@ Prefab:
propertyPath: Width
value: 0.4
objectReference: {fileID: 0}
- target: {fileID: 11494368, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: EjectSpeed
value: 15
objectReference: {fileID: 0}
- target: {fileID: 11494368, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: DashSpeed
value: 12
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
m_IsPrefabParent: 0

View File

@ -85,6 +85,31 @@ NavMeshSettings:
cellSize: 0.16666667
manualCellSize: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &431637404 stripped
GameObject:
m_PrefabParentObject: {fileID: 170392, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
m_PrefabInternal: {fileID: 1660116367}
--- !u!114 &431637410 stripped
MonoBehaviour:
m_PrefabParentObject: {fileID: 11494368, guid: acd71c7b2f995984d9033c9dc4e257dc,
type: 2}
m_PrefabInternal: {fileID: 1660116367}
m_Script: {fileID: 11500000, guid: 8c32c40e0b8e5eb47bb7a91068af09ca, type: 3}
--- !u!114 &431637411
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 431637404}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 77462b2431858f84b9bc2d055c2f4d45, type: 3}
m_Name:
m_EditorClassIdentifier:
aspi: {fileID: 431637410}
WalkAnimSpeed: 3
WalkAnimAngle: 20
EjectSpinSpeed: 5
--- !u!114 &1027139440 stripped
MonoBehaviour:
m_PrefabParentObject: {fileID: 11471614, guid: 198e988adacced646a19f757f6237ae1,
@ -138,6 +163,11 @@ Prefab:
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: 158e745881137e04ca2086294f44d74c, type: 2}
m_IsPrefabParent: 0
--- !u!212 &1106066633 stripped
SpriteRenderer:
m_PrefabParentObject: {fileID: 21220066, guid: acd71c7b2f995984d9033c9dc4e257dc,
type: 2}
m_PrefabInternal: {fileID: 1660116367}
--- !u!1001 &1223268487
Prefab:
m_ObjectHideFlags: 0
@ -297,6 +327,10 @@ Prefab:
propertyPath: m_Radius
value: 0.76
objectReference: {fileID: 0}
- target: {fileID: 11494368, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: SpriteWalk
value:
objectReference: {fileID: 1106066633}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
m_IsPrefabParent: 0

View File

@ -171,6 +171,53 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
--- !u!1001 &160670874
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 498212, guid: 158e745881137e04ca2086294f44d74c, type: 2}
propertyPath: m_LocalPosition.x
value: -0.6692338
objectReference: {fileID: 0}
- target: {fileID: 498212, guid: 158e745881137e04ca2086294f44d74c, type: 2}
propertyPath: m_LocalPosition.y
value: 1.7862048
objectReference: {fileID: 0}
- target: {fileID: 498212, guid: 158e745881137e04ca2086294f44d74c, type: 2}
propertyPath: m_LocalPosition.z
value: -0.045327663
objectReference: {fileID: 0}
- target: {fileID: 498212, guid: 158e745881137e04ca2086294f44d74c, type: 2}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 498212, guid: 158e745881137e04ca2086294f44d74c, type: 2}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 498212, guid: 158e745881137e04ca2086294f44d74c, type: 2}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 498212, guid: 158e745881137e04ca2086294f44d74c, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 498212, guid: 158e745881137e04ca2086294f44d74c, type: 2}
propertyPath: m_RootOrder
value: 3
objectReference: {fileID: 0}
- target: {fileID: 11450178, guid: 158e745881137e04ca2086294f44d74c, type: 2}
propertyPath: InputMapperAsset
value:
objectReference: {fileID: 11400000, guid: ba52e0f13249c9e46bb162622e61904f,
type: 2}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: 158e745881137e04ca2086294f44d74c, type: 2}
m_IsPrefabParent: 0
--- !u!1 &238389812
GameObject:
m_ObjectHideFlags: 0
@ -231,44 +278,110 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
--- !u!1 &1024275268
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 1024275269}
- 114: {fileID: 1024275270}
m_Layer: 0
m_Name: spawnAsteroid
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1024275269
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1024275268}
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: []
m_Father: {fileID: 0}
m_RootOrder: 1
--- !u!114 &1024275270
--- !u!212 &841465700 stripped
SpriteRenderer:
m_PrefabParentObject: {fileID: 21220066, guid: acd71c7b2f995984d9033c9dc4e257dc,
type: 2}
m_PrefabInternal: {fileID: 1660503799}
--- !u!1001 &1660503799
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 494126, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 494126, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 494126, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 494126, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 494126, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 494126, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 494126, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 494126, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 403646, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_LocalScale.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 403646, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_LocalScale.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 403646, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_LocalPosition.y
value: 3.46
objectReference: {fileID: 0}
- target: {fileID: 21257324, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_Enabled
value: 1
objectReference: {fileID: 0}
- target: {fileID: 157058, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 21220066, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_FlipX
value: 0
objectReference: {fileID: 0}
- target: {fileID: 11494368, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: SpriteWalk
value:
objectReference: {fileID: 841465700}
- target: {fileID: 21220066, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_Color.r
value: 1
objectReference: {fileID: 0}
- target: {fileID: 21220066, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_Color.g
value: 1
objectReference: {fileID: 0}
- target: {fileID: 21220066, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
propertyPath: m_Color.b
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
m_IsPrefabParent: 0
--- !u!1 &1660503800 stripped
GameObject:
m_PrefabParentObject: {fileID: 170392, guid: acd71c7b2f995984d9033c9dc4e257dc, type: 2}
m_PrefabInternal: {fileID: 1660503799}
--- !u!114 &1660503801
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1024275268}
m_GameObject: {fileID: 1660503800}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 665432c96ca23f140a869ed98ade0dde, type: 3}
m_Script: {fileID: 11500000, guid: 77462b2431858f84b9bc2d055c2f4d45, type: 3}
m_Name:
m_EditorClassIdentifier:
myAsteroid: {fileID: 160026, guid: cc1a204562630cd40a1dd685b5ed8e6e, type: 2}
aspi: {fileID: 0}
WalkAnimSpeed: 4
WalkAnimAngle: 20
EjectSpinSpeed: 60