04-07-2014, 09:22 AM
ตามหัวข้อเลยนะครับ อันนี้ตัวสคริปต์ครับ
เป็นสคริปต์ไว้ดำน้ำครับ
แต่มันติดปัญหาที่ พอขึ้นบกแล้วมันไม่ยอมเปลี่ยนไปใช้ set normal
รบกวนด้วยนะครับ
เป็นสคริปต์ไว้ดำน้ำครับ
Quote:var waterLevel : float;
var myParticles : ParticleSystem;
private var isUnderwater : boolean;
private var normalColor : Color;
private var underwaterColor : Color;
private var chMotor : CharacterMotor;
private var canSwim : boolean = false;
private var underGround : boolean = false;
var groundLevel : float;
function Start ()
{
normalColor = new Color (0.5f, 0.5f, 0.5f, 0.5f);
underwaterColor = new Color (0.22f, 0.65f, 0.77f, 0.5f);
chMotor = GetComponent(CharacterMotor);
myParticles.Stop(); // อันนี้เอฟเฟ็คตอนอยู่ใต้น้ำเฉยๆ
}
function Update ()
{
if ((transform.position.y < waterLevel) != isUnderwater)
{
isUnderwater = transform.position.y < waterLevel;
if (isUnderwater) SetUnderwater ();
if (!isUnderwater) SetNormal (); // ประมาณว่า ถ้าอยู่ต่ำกว่าระดับน้ำให้นับเป็นใต้น้ำ ครับ ถ้าอยู่ใต้น้ำก็ว่ายน้ำได้ประมาณเนี้ย
}
if(transform.position.y < groundLevel)
{
canSwim = true;
underGround = true;
}
else
{
underGround = false;
}
if(isUnderwater && canSwim == true && underGround == false && Input.GetKey(KeyCode.E)) // อันนี้ประมาณว่ากด e แล้วใช้ constance force
{
constantForce.relativeForce = Vector3(0,-200, 0);
}
else
{
constantForce.relativeForce = Vector3(0, 0, 0);
}
if(isUnderwater && canSwim == true && Input.GetKey(KeyCode.Q)) // เหมือนๆกับกด q แต่อันนี้ดำลงอันนั้นว่ายขึ้น
{
constantForce.relativeForce = Vector3(0, 200, 0);
}
}
function SetNormal ()
{
RenderSettings.fogColor = normalColor;
RenderSettings.fogDensity = 0.002f;
chMotor.movement.gravity = 20;
chMotor.movement.maxFallSpeed = 20;
chMotor.movement.maxForwardSpeed = 6;
chMotor.movement.maxSidewaysSpeed = 6;
myParticles.Stop();
canSwim = false;
}
// อันนั้คือ set normal ครับ ประมาณว่าอยู่บนบกแหละ
function SetUnderwater ()
{
RenderSettings.fogColor = underwaterColor;
RenderSettings.fogDensity = 0.3f;
chMotor.movement.gravity = 2;
chMotor.movement.maxFallSpeed = 5;
chMotor.movement.maxForwardSpeed = 4;
chMotor.movement.maxSidewaysSpeed = 4;
myParticles.Play();
}
// อันนี้คืออยู่ใต้น้ำ
แต่มันติดปัญหาที่ พอขึ้นบกแล้วมันไม่ยอมเปลี่ยนไปใช้ set normal
รบกวนด้วยนะครับ