2013년 6월 16일 일요일

SidescrollControl.js

// SidescrollControl creates a 2D control scheme where the left
// pad is used to move the character, and the right pad is used
// to make the character jump.
//////////////////////////////////////////////////////////////

#pragma strict

@script RequireComponent( CharacterController ) //캐릭터 콘트롤러를 쓰겠다.

// This script must be attached to a GameObject that has a CharacterController
var moveTouchPad : Joystick; // 조이스틱 스크립트를 담는다. gui 텍스쳐 포함
var jumpTouchPad : Joystick;

var forwardSpeed : float = 4;  // 우측
var backwardSpeed : float = 4;  // 좌측
var jumpSpeed : float = 16;  // 점프 
var inAirMultiplier : float = 0.25; // 공중 에서... // Limiter for ground speed while jumping

private var thisTransform : Transform;  // 트랜스폼을 변수에 담기 위해..
private var character : CharacterController; 
private var velocity : Vector3; // Used for continuing momentum while in air
private var canJump = true; // 점프 가능한지

function Start()
{
// Cache component lookup at startup instead of doing this every frame
thisTransform = GetComponent( Transform );  // 트랜스폼을 담는다.
character = GetComponent( CharacterController );  // 캐릭터 콘트롤러를 담는다.

// Move the character to the correct start position in the level, if one exists
var spawn = GameObject.Find( "PlayerSpawn" );  // 플래이어 되살아나는 지점?
if ( spawn )
thisTransform.position = spawn.transform.position;  // 뭘까?
}

function OnEndGame()
{
// Disable joystick when the game ends
moveTouchPad.Disable(); // 사라지는 모양...죽으면..
jumpTouchPad.Disable();

// Don't allow any more control changes when the game ends
this.enabled = false;   // 몰라..
}

function Update()
{
var movement = Vector3.zero;  // 현재 해당하는 백터

// Apply movement from move joystick
if ( moveTouchPad.position.x > 0 )
movement = Vector3.right * forwardSpeed * moveTouchPad.position.x;   // 좌우 움직임
else
movement = Vector3.right * backwardSpeed * moveTouchPad.position.x;

// Check for jump
if ( character.isGrounded )  // 땅에 닿으면 
{
var jump = false; 
var touchPad = jumpTouchPad;  // 점프 터치 패드에서 가져와야지.. 정보를 

if ( !touchPad.IsFingerDown() )  // 터치패드를 누르면..
canJump = true;  // 점프 가능

if ( canJump && touchPad.IsFingerDown() )  // 또누르면.. 점프 불가능
{
jump = true;
canJump = false;
}

if ( jump )  // 점프일때
{
// Apply the current movement to launch velocity
velocity = character.velocity;  // 캐릭터 컨트롤로의 벨로시티를 가져와서 
velocity.y = jumpSpeed;  // y값에 힘을 준다. 
}
}
else  // 땅에 닿지 않으면 
{
// Apply gravity to our velocity to diminish it over time
velocity.y += Physics.gravity.y * Time.deltaTime;  // 해당 값에 중력을 더해준다... 

// Adjust additional movement while in-air  - 좌우로 좀 건드린다. 
movement.x *= inAirMultiplier; 
// movement.z *= inAirMultiplier;
}

movement += velocity;
movement += Physics.gravity;
movement *= Time.deltaTime;

// Actually move the character
character.Move( movement );

if ( character.isGrounded )
// Remove any persistent velocity after landing
velocity = Vector3.zero;
}

댓글 없음:

댓글 쓰기