私はunity2dでポケモンゲームを作ろうとしています。私はグリッドを動かすことができますが、移動することなく方向にどのように直面するか(A、WまたはSまたはDが移動せずに方向を向いている場合と同じ場所に留まる)の手掛かりはありません。私がこれまで持っているものだユニティ2D:移動しない向きの向き
:
[SerializeField]
float walkingVelocity = 2;
[SerializeField]
float runingVelocity = 4;
Vector3 p; // For movement
Animator anim;
Vector2 input;
float actualSpeed = 0;
void Start()
{
anim = GetComponent<Animator>();
p = transform.position; // Take the initial position
}
void FixedUpdate()
{
input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
actualSpeed = Input.GetKey(KeyCode.LeftShift) ? walkingVelocity : runingVelocity;
if (input != Vector2.zero && p == transform.position)
{
//CalcularHierbaAlta();
if (Mathf.Abs(input.x) > Mathf.Abs(input.y))
{
if (input.x > 0)
{
//direccion = Direccion.Este;
//PuedeMoverse = CalcularFrente();
p += Vector3.right;
anim.SetFloat("input_x", input.x);
anim.SetFloat("input_y", input.y);
anim.SetBool("isMoving", true);
}
else
{
p -= Vector3.right;
anim.SetFloat("input_x", input.x);
anim.SetFloat("input_y", input.y);
anim.SetBool("isMoving", true);
}
}
else
{
if (input.y > 0)
{
p += Vector3.up;
anim.SetFloat("input_x", input.x);
anim.SetFloat("input_y", input.y);
anim.SetBool("isMoving", true);
}
else
{
p -= Vector3.up;
anim.SetFloat("input_x", input.x);
anim.SetFloat("input_y", input.y);
anim.SetBool("isMoving", true);
}
}
}else if (input == Vector2.zero)
{
anim.SetBool("isMoving", false);
}
transform.position = Vector3.MoveTowards(transform.position, p, actualSpeed * Time.deltaTime);
}
はどうもありがとうございました!
0で初期化され、この問題は明日に解決されますが、私はあなたが自分でそれを行うことができることを確信しています。神、それはとても明白でした!私はまだそれを試していないが、それは多くの意味があります。ありがとう! :) – James