using UnityEngine;
using System.Collections;
public class PacmanMove : MonoBehaviour {
public float speed = 0.1f;
Vector2 dest = Vector2.zero;
// Use this for initialization
void Start () {
dest = transform.position;
}
// Update is called once per frame
void Update () {
}
void FixedUpdate()
{
Vector2 p = Vector2.MoveTowards(transform.position, dest, speed);
GetComponent<Rigidbody2D>().MovePosition(p);
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
if (Input.GetKey(KeyCode.UpArrow)&& valid(Vector2.up) )
{ //
dest = (Vector2)transform.position + Vector2.up;
Debug.Log("FEIFEI");
}
if (Input.GetKey(KeyCode.RightArrow) && valid(Vector2.right))
dest = (Vector2)transform.position + Vector2.right;
if (Input.GetKey(KeyCode.DownArrow) && valid(-Vector2.up))
dest = (Vector2)transform.position - Vector2.up;
if (Input.GetKey(KeyCode.LeftArrow) && valid(-Vector2.right))
dest = (Vector2)transform.position - Vector2.right;
Vector2 dir = dest - (Vector2)transform.position;
GetComponent<Animator>().SetFloat("dirX", dir.x);
GetComponent<Animator>().SetFloat("dirY", dir.y);
/*我发现吃豆人的代码真的是,不太明白为什么这么做,这么做有什么好处呢
特别丝滑
*/
}
bool valid(Vector2 dir)
{
Vector2 pos = transform.position;
RaycastHit2D hit = Physics2D.Linecast(pos + dir, pos);
return (hit.collider == GetComponent<Collider2D>());
}
}
PacmanMove ------ 研究一下Circle Collider的用法
最新推荐文章于 2024-09-03 00:41:58 发布