캐릭터 제어 부분을 하면서 느낀 것은... javascript는 코딩이 참 정말정말 피곤하다.
자동완성도 없고.. 연관있는 코드가 안떠서 힘들었다...
`그래서 한번도 안해본 C#으로 갈아탔다. 이거로 어차피 자바스크립트처럼 스크립팅 하는 정도니까
차라리 이걸로 보고 따라하는게 더 편하더라카더라...
-----------------------------------------------------------------------------------------------------
1. Unity Chan을 사용했다.
2. 카메라는 ThirdPersonCamera(s)을 구매하여 3인칭 카메라를 약간 손봐서 만들었다.
-------------------------------------------------------------------------------------------------
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(CapsuleCollider))]
public class ctrlmove2 : MonoBehaviour {
[Tooltip("캐릭터의 이동속도")]
public float speed = 20.0f;
[Tooltip("캐릭터의 점프력")]
public float jumpPower = 30.0f;
private float tmpJumpPower; //땅이 아닐경우 잔여 점프력을 저장하여 점차적으로 바닥을 향하도록 만든다.
private float X,Y;
private float DashTime, Dash=1.0f;
private Vector3 dr;
// Use this for initialization
void Start () {
ctrler = GetComponent <CharacterController> ();
}
void FixedUpdate () { //매 프레임 불러와짐. 물리적 처리를 위함
CharacterController();
dr = new Vector3(0, 0, 0);
}
void CharacterController() {
if (Input.GetButtonUp("Vertical")) {
DashTime = Time.time;
Dash = 1.0f;
} else if (Input.GetButtonDown("Vertical") && Time.time - DashTime <= 0.1f) {
Dash = 1.7f;
}
Y = Input.GetAxis("Vertical");
X = Input.GetAxis("Horizontal");
dr += transform.forward * Y; //앞뒤에 대한 방향 및 속도를 연산한다.
dr += transform.right * X; //좌우에 대한 방향을 연산한다.
dr *= speed * Dash; //속도를 곱한다.
transform.right = Camera.main.transform.right; //3인칭 카메라가 회전을 하면 따라서 회전한다.
if (ctrler.isGrounded) //땅인가?
{
if (Input.GetButton("Jump")) //점프를 눌렀는가?
{
tmpJumpPower += jumpPower * Dash; //초기 점프력 대입
}
}
else
{
tmpJumpPower += Physics.gravity.y * 5 * Time.deltaTime; //중력에 따라서 점차 줄어든 후 아래로 향하도록 한다.
}
dr.y += tmpJumpPower;//연산된 y에 대한 힘을 적용한다.
ctrler.Move(dr * Time.deltaTime); //연산한 벡터를 적용한다.
}
-----------------------------------------------------------------------------------------
파일은 첨부하였다!
하지만... 카메라는 저작권상 제가 막 올려드릴 수 없습니다 ㅎ..
---------------------------------------------------
여담이지만......
캐릭터콘트롤러를 이리저리 다뤄봤는데
결국은 지터? 랄까 캐릭터가 흔들리더군요
3인칭 카메라가 독자적으로 캐릭터를 쫓아가니 그게 눈에 다 보여서
어떻게 하나 고민하다가
캐릭터의 자식객체로 바꿔서 쫓아다니도록 하니
해결되었다.
하.... 토하는줄
'Unity > 3D' 카테고리의 다른 글
Unity3D Assest - UnityStandardAssets.Utility 해결방법 (0) | 2017.10.13 |
---|---|
Unity 3D 벽점프를 위한 반사벡터 구하기 [C#] / Unity VS (0) | 2017.09.26 |
Unity3D FPS처럼 화면 돌리기 [JavaScript] (0) | 2017.09.17 |
Unity 3D Aim 을 쳐다보도록 하기 [JavaScript] (0) | 2017.09.17 |