2,584
社区成员




using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;public class Swordman : MonoBehaviour
{
public Rigidbody2D rb;
public CapsuleCollider2D coll;
public LayerMask ground;
public AudioSource bgm1, bgm2, bgm3;
public Animator anim; public float speed;
public float jumpForce; void Start()
{
} void Update()
{
Movement();
} void Movement()
{
float horizontalMove = Input.GetAxis("Horizontal");
float faceDirection = Input.GetAxisRaw("Horizontal"); //人物移动
if (horizontalMove != 0 && !anim.GetBool("Attack"))
{
rb.velocity = new Vector2(horizontalMove * speed * Time.deltaTime, rb.velocity.y);
anim.SetFloat("Running", Mathf.Abs(horizontalMove));
}
if (faceDirection != 0 && !anim.GetBool("Attack"))
{
transform.localScale = new Vector3(-1 * faceDirection, 1, 1);
} //人物跳跃
if (Input.GetKeyDown(KeyCode.W) && coll.IsTouchingLayers(ground) && !anim.GetBool("Attack"))
{
//jumpAudio.Play();
rb.velocity = new Vector2(rb.velocity.x, jumpForce * Time.deltaTime);
anim.SetBool("Jumping", true);
}
if (coll.IsTouchingLayers(ground))
{
anim.SetBool("Jumping", false);
} //人物攻击
if(Input.GetKeyDown(KeyCode.J) && !anim.GetBool("Attack") && !anim.GetBool("Jumping"))
{
anim.SetBool("Attack", true);
}
} void AttackEnd()
{
anim.SetBool("Attack", false);
} private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.transform.tag == "Food")
{
//collectAudio.Play();
Destroy(collision.gameObject);
}
if (collision.transform.tag == "Deadline")
{
GetComponent<AudioSource>().enabled = false;
//deadAudio.Play();
Invoke("Restart", 2);
}
} void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
怎么解决的我也遇到了
我也遇到了这个问题,在Animator里 勾选 Apply Root Motion 后就能移动了。