66666

5555

444444】


333333

2222222222

111111

射线:
Ray ray = this.camera.ScreenPointToRay(position);
RaycastHit[] hits = Physics.RaycastAll(ray);
foreach(RaycastHit hit in hits)
{
BoxCollider bc = hit.collider as BoxCollider;
if(bc != null && bc.name.Contains("floor") && player != null)
{
player.GetComponent<Player>().WalkTo(hit.point);
break;
}
}

youxi

根据input 移动

游戏输入
【游戏输入】
在Edit->Project Settings->Input设置游戏输入;
在脚本中利用Input类来检测输入状态;
Input.GetAxis返回的值是-1到1之间,0表示没有输入。
Input.GetMouseButtonUp(0):检测鼠标左键是否抬起.

游戏中的输入
用键盘鼠标使物体移动 Vector3 direction = Input.GetAxis("Horizontal") * transform.right + Input.GetAxis("Vertical") * transform.forward; transform.position = transform.position + walkSpeed * direction * Time.deltaTime;
鼠标点击移动
Edit->Project Setting->Input
// 要移动的物体
public GameObject center;
// 新的位置
Vector3 newPoint;
// 用来看看这次运动是否结束
private bool isOver = true;
void Update ()
{
if (Input.GetMouseButtonUp(0))
{
ClickOn(Input.mousePosition);
}
MoveTo(newPoint);
}
void ClickOn(Vector2 pos)
{
// 从摄像机生成一条射线
Ray ray = Camera.main.ScreenPointToRay(pos);
// 获取射线穿过的所有游戏对象
RaycastHit[] hits = Physics.RaycastAll(ray);
// 遍历射线穿过的所有对象
foreach (RaycastHit hit in hits)
{
// 如果当前穿过的对象的名字叫做Plane(名字根据自己设置)
if (hit.collider.name == "Plane")
{
newPoint = hit.point;
// 是因为我的球大小是1然后对应的y会比点击到的y要大0.5
newPoint.y = 0.5f;
isOver = false;
break;
}
}
}
// 这个是往指定方向移动的方法
private void MoveTo(Vector3 tar)
{
if(!isOver)
{
Vector3 offSet = tar - center.transform.position;
// 进行移动
center.transform.position += offSet.normalized * 5 * Time.deltaTime;
// 如果位置小于0.5就不动了
if(Vector3.Distance(tar, center.transform.position)<0.5f)
{
isOver = true;
center.transform.position = tar;
}
}
}
Input.GetAxis()返回的值时-1到1之间,确定当前输入的是哪个方向,0表示没有输入
游戏输入的步骤
怎么嵌入android开发呢?
游戏输入的操作