// 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;
}
댓글 없음:
댓글 쓰기