나는 내 선수가 잠시 앞으로 뛰어 오르려고 노력해 왔고, 나는 갇혀있다. 나는 다른 대답을보고 그것들을 시도했지만, 내가 그것을 원했던 방식대로 작동시키지 못했습니다. 나는 여러 가지 방법을 시도해 왔지만 그 중 누구도 그들이하는 일을하지 않고있다. 대부분의 경우 반송 거리는 같지 않았고 때로는 플레이어가 땅에 떨어졌을 때 플레이어가 앞으로 미끄러지 듯 내가 원하는 것이 아닙니다. 나는 Crossy 도로에서와 같이 내 캐릭터 점프를하고 싶다. 다음은 내가 시도한 한 가지입니다.어떻게 플레이어를 점프시킬 수 있습니까?
using UnityEngine;
using System.Collections;
public class MovePlayer : MonoBehaviour
{
Vector3 endPos;
int numBackwards = 0;
bool jumping = false;
public Rigidbody rigidBody;
//public Collider theCollider;
void Start()
{
rigidBody = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
rigidBody.freezeRotation = true;
endPos = gameObject.transform.position;
if (!jumping)
{
if (Input.GetButtonDown("up") && gameObject.transform.position == endPos) {
if (numBackwards < 0)
{
numBackwards++;
}
else
{
UpdateScore.score++;
}
transform.Translate(Vector3.up * 50 * Time.deltaTime, Space.World);
transform.Translate(Vector3.forward * 110 * Time.deltaTime, Space.World);
}
else if (Input.GetButtonDown("down") && gameObject.transform.position == endPos)
{
transform.Translate(Vector3.up * 50 * Time.deltaTime, Space.World);
transform.Translate(-Vector3.forward * 110 * Time.deltaTime, Space.World);
numBackwards--;
}
else if (Input.GetButtonDown("left") && gameObject.transform.position == endPos)
{
transform.Translate(Vector3.up * 50 * Time.deltaTime, Space.World);
transform.Translate(Vector3.left * 110 * Time.deltaTime, Space.World);
}
else if (Input.GetButtonDown("right") && gameObject.transform.position == endPos)
{
transform.Translate(Vector3.up * 50 * Time.deltaTime, Space.World);
transform.Translate(Vector3.right * 110 * Time.deltaTime, Space.World);
}
}
}
void OnCollisionEnter(Collision other)
{
if (other.gameObject.CompareTag("Ground"))
jumping = false;
}
void OnCollisionExit(Collision other)
{
if (other.gameObject.CompareTag("Ground"))
jumping = true;
}
}
거의 모든 점프 크기가 다르기 때문에 이러한 방식으로 작동하지 않았습니다.
public float distance;
public float fspeed;
public float uspeed;
//PRIVATE
private Rigidbody rigidBody;
void Awake()
{
rigidBody = GetComponent<Rigidbody>();
rigidBody.freezeRotation = true;
}
void FixedUpdate()
{
if (Physics.Raycast(transform.position, -Vector3.up, distance + 0.1F))
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
rigidBody.AddForce(new Vector3(0, uspeed, fspeed));
}
if (Input.GetKeyDown(KeyCode.DownArrow))
{
rigidBody.AddForce(new Vector3(0, uspeed, -fspeed));
}
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
rigidBody.AddForce(new Vector3(fspeed, uspeed, 0));
}
if (Input.GetKeyDown(KeyCode.RightArrow))
{
rigidBody.AddForce(new Vector3(-fspeed, uspeed, 0));
}
}
}
이 중 하나를 작동하지 않았다 플레이어가 착륙 할 때 앞으로 밀어 것 : 나는 시도 또 한가지이 있었다. 내가 시도한 마지막 것은 점프와 유휴 상태의 애니메이션을 사용하는 것이 었는데, 왜 작동하지 않는지 알 수 없었지만 작동하지 않았다. 제가 알고 싶은 것은 슬라이딩없이 매번 동일한 거리로 점프 할 수없는 가장 좋은 방법은 무엇인지, 또는 내가 원하는 방식대로 작동하도록 이전의 방법을 수정하는 방법은 무엇입니까?
나는 이것이 작동하지 않는 이유를 알 수 있습니까? –
무슨 일입니까? –
그냥 움직이지 않는 것 –