No console message about error.
Here's the code that I've added.
Code: Select all
// WATER
public bool underWater = false;
public bool swimming = false;
private float swimAccel;
private float underWaterTimer = 0.0f;
private float waterLevel;
private float underwaterLevel;
public AudioSource aSource;
public AudioSource waterSource;
public AudioClip enterPool;
public AudioClip enterPoolSplash;
public AudioClip inhale;
public GameObject waterSplash;
public ParticleEmitter waterFoam;
private ParticleEmitter emiter;
Code: Select all
if (swimming)
{
this.m_HPoint = myTransform.position.y;
run = false;
fallDistance = 0.0f;
this.grounded = false;
}
else
{
float inputX = ControlFreak2.CF2Input.GetAxis("Horizontal");
float inputY = ControlFreak2.CF2Input.GetAxis("Vertical");
float inputModifyFactor = (inputX != 0.0f && inputY != 0.0f) ? .7071f : 1.0f;
if (swimming)
{
if (swimAccel > 0.0f)
swimAccel -= Time.deltaTime * 4.0f;
if (Input.GetKey(RunKey))
{
Vector3 swimDir = cameraHolder.transform.TransformDirection(Vector3.forward);
if (transform.position.y >= waterLevel && swimDir.y > 0.0f)
swimDir.y = 0.0f;
if (swimAccel <= 1.0f)
{
swimAccel = 6.0f;
}
if (swimAccel > 1.0f)
moveDirection = swimDir * swimAccel;
}
else
{
moveDirection.x = inputX * 2.0f;
moveDirection.z = inputY * 2.0f;
moveDirection = myTransform.TransformDirection(moveDirection);
}
if (underWater)
{
underWaterTimer += Time.deltaTime;
if (underWaterTimer > 15.0f)
{
//bl_PlayerDamageManager.(10);
underWaterTimer = 12.0f;
}
}
}
Code: Select all
if (swimming)
{
moveDirection.y = 0.5f + (underwaterLevel - transform.position.y);
//if(transform.position.y > waterLevel && !grounded)
// transform.position.y = waterLevel;
if (emiter)
emiter.emit = !underWater;
if (transform.position.y > underwaterLevel)
{
if (underWaterTimer > 5.0f)
{
GetComponent<AudioSource>().clip = inhale;
GetComponent<AudioSource>().Play();
}
underWater = false;
underWaterTimer = 0.0f;
aSource.Stop();
}
if (transform.position.y > waterLevel && grounded)
{
swimming = false;
if (emiter)
{
emiter.emit = false;
emiter.transform.parent = null;
}
state = 0;
}
}
Code: Select all
void PlayerInWater(float s)
{
waterLevel = s + 0.9f;
underwaterLevel = s + 0.4f;
if (GetComponent<AudioSource>().isPlaying)
GetComponent<AudioSource>().Stop();
if (!aSource.isPlaying)
aSource.Play();
if (!swimming)
{
if (grounded)
{
Instantiate(waterSplash, transform.position + new Vector3(0, -0.5f, 0), transform.rotation);
waterSource.PlayOneShot(enterPool, 1.0f);
}
else
{
Instantiate(waterSplash, transform.position + new Vector3(0, 0.5f, 0.2f), transform.rotation);
Instantiate(waterSplash, transform.position, transform.rotation);
Instantiate(waterSplash, transform.position + new Vector3(0, -0.5f, 0.5f), transform.rotation);
waterSource.PlayOneShot(enterPoolSplash, 1.0f);
}
emiter = Instantiate(waterFoam, transform.position + new Vector3(0, -0.7f, 0), transform.rotation) as ParticleEmitter;
emiter.transform.parent = this.transform;
}
underWater = true;
swimming = true;
}