J'ai bien fait comme cela...
Le problème reste le même, le changement du Player2 au Player1 se s'applique pas quand je rentre dans le BodyTriggerWalk.
Peut être qu'un code en C# fonctionnerait mieux, tu y semble plus a l'aise que sur Java
Code : Tout sélectionner
#pragma strict
var otherPlayer : GameObject;
function start ()
{
DontDestroyOnLoad (gameObject);
}
function OnTriggerEnter (trigger:Collider)
{
if (trigger.name == ("EnemyTriggerFly"))
{
if ((gameObject.name == "FPScontroller" && gameObject.activeSelf))
{
gameObject.SetActive (!gameObject.activeSelf);
otherPlayer.SetActive (!otherPlayer.activeSelf);
}
}
if (trigger.name == ("BodyTriggerWalk"))
{
if ((gameObject.name == "FPSfly" && gameObject.activeSelf))
{
gameObject.SetActive (!gameObject.activeSelf);
otherPlayer.SetActive (!otherPlayer.activeSelf);
}
}
}
Voici mon code pour le Player2, le pb vient peut être de la :
Code : Tout sélectionner
using UnityEngine;
[RequireComponent(typeof(Camera))]
public class GhostFreeRoamCamera : MonoBehaviour
{
public float initialSpeed = 10f;
public float increaseSpeed = 1.25f;
public bool allowMovement = true;
public bool allowRotation = true;
public KeyCode forwardButton = KeyCode.Z;
public KeyCode backwardButton = KeyCode.S;
public KeyCode rightButton = KeyCode.D;
public KeyCode leftButton = KeyCode.Q;
public float cursorSensitivity = 0.025f;
public bool cursorToggleAllowed = true;
public KeyCode cursorToggleButton = KeyCode.Escape;
private float currentSpeed = 0f;
private bool moving = false;
private bool togglePressed = false;
private void OnEnable()
{
if (cursorToggleAllowed)
{
Screen.lockCursor = true;
Cursor.visible = false;
}
}
private void Update()
{
if (allowMovement)
{
bool lastMoving = moving;
Vector3 deltaPosition = Vector3.zero;
if (moving)
currentSpeed += increaseSpeed * Time.deltaTime;
moving = false;
CheckMove(forwardButton, ref deltaPosition, transform.forward);
CheckMove(backwardButton, ref deltaPosition, -transform.forward);
CheckMove(rightButton, ref deltaPosition, transform.right);
CheckMove(leftButton, ref deltaPosition, -transform.right);
if (moving)
{
if (moving != lastMoving)
currentSpeed = initialSpeed;
transform.position += deltaPosition * currentSpeed * Time.deltaTime;
}
else currentSpeed = 0f;
}
if (allowRotation)
{
Vector3 eulerAngles = transform.eulerAngles;
eulerAngles.x += -Input.GetAxis("Mouse Y") * 359f * cursorSensitivity;
eulerAngles.y += Input.GetAxis("Mouse X") * 359f * cursorSensitivity;
transform.eulerAngles = eulerAngles;
}
if (cursorToggleAllowed)
{
if (Input.GetKey(cursorToggleButton))
{
if (!togglePressed)
{
togglePressed = true;
Screen.lockCursor = !Screen.lockCursor;
Cursor.visible = !Cursor.visible;
}
}
else togglePressed = false;
}
else
{
togglePressed = false;
Cursor.visible = false;
}
}
private void CheckMove(KeyCode keyCode, ref Vector3 deltaPosition, Vector3 directionVector)
{
if (Input.GetKey(keyCode))
{
moving = true;
deltaPosition += directionVector;
}
}
}