不理解valid方法参数里的vector2 dir是以怎样的逻辑获得向量的?
以我的理解valid是方法,返回的是bool类型,那么方法参数里不应该是bool类型的吗?
主要不明白dir为什么可以通过按键控制获得x,y的坐标。
using UnityEngine;
public class PacmanMove : MonoBehaviour {
private float speed = 0.25f;
private Vector2 dest = Vector2.zero;
private void Start()
{
dest = transform.position;
}
private void FixedUpdate()
{
Vector2 temp = Vector2.MoveTowards(transform.position, dest, speed);
GetComponent<Rigidbody2D>().MovePosition(temp);
if (Input.GetKey(KeyCode.B)) {
}
if ((Vector2)transform.position == dest) {
if ((Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))&&Valid(Vector2.up))
{
dest = (Vector2)transform.position + Vector2.up;
}
if ((Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) && Valid(Vector2.left))
{
dest = (Vector2)transform.position + Vector2.left;
}
if ((Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) && Valid(Vector2.down))
{
dest = (Vector2)transform.position + Vector2.down;
}
if ((Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) && Valid(Vector2.right))
{
dest = (Vector2)transform.position + Vector2.right;
}
}
}
private bool Valid(Vector2 dir) {
Vector2 pos = transform.position;
RaycastHit2D hit = Physics2D.Linecast(pos+dir, pos);
Debug.Log(dir);
return (hit.collider == GetComponent<Collider2D>());
}
}
您好,我们通过update里的按键检测,根据按下的键来设置需要的dir值,再传给valid进行检测,至于为什么进去V2出来bool是因为V2进去之后我们利用它做了判断,得到了bool的结果
总之,dir是我们根据按键反馈指定的