图形学实验 警察抓小偷
exe 下载地址
点击下载 警察抓小偷
警察移动代码:(鼠标点击地面移动)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class fps : MonoBehaviour {
private Vector3 target;//目标位置。
private bool isOver = true;//移动是否结束
public float speed=10;
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))//如果点击鼠标左键
{
//使用射线来获取鼠标点击处。
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//创建射线。主摄像机发的射线。经过鼠标当前位置。
RaycastHit hitInfo = new RaycastHit();
if (Physics.Raycast(ray, out hitInfo))
{
//获取碰撞点位置
if (hitInfo.collider.name == "Terrain")//Plane为平面名字
{
target = hitInfo.point;
target.y = 7f;
isOver = false;
}
}
}
MoveTo(target);//移动到目标点。
}
private void MoveTo(Vector3 tar)
{
if (!isOver)
{
Vector3 v1 = tar - transform.position;
transform.position += v1.normalized * speed * Time.deltaTime;
if (Vector3.Distance(tar, transform.position) <= 0.1f)
{
isOver = true;
}
}
else
{
}
}
}
小偷移动代码:(WSAD 控制小偷方向)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class xiaotoufps : MonoBehaviour {
private Vector3 target;
private bool isOver = true;
public GameObject cube1;
public float speed = 10.0f;
// Use this for initialization
void Start () {
cube1 = GameObject.Find("Cube");
target = this.transform.localPosition;
}
// Update is called once per frame
void Update () {
if(Input.GetKey(KeyCode.Escape))
{
Screen.fullScreen = false;
}
if (Input.GetKey(KeyCode.D))
{
target.x = this.transform.localPosition.x + 10f;
isOver = false;
}
if (Input.GetKey(KeyCode.A))
{
target.x = this.transform.localPosition.x - 10f;
isOver = false;
}
if (Input.GetKey(KeyCode.W))
{
target.z = this.transform.localPosition.z + 10f;
isOver = false;
}
if (Input.GetKey(KeyCode.S))
{
target.z = this.transform.localPosition.z - 10f;
isOver = false;
}
if(Input.GetKeyUp(KeyCode.Space))
{
isOver = true;
}
MoveTo(target);
}
private void MoveTo(Vector3 var)
{
if (!isOver)
{
Vector3 v1 = target - transform.position;
transform.position += v1.normalized * speed * Time.deltaTime;
if(Vector3.Distance(target,transform.position)<=0.1f)
{
isOver = true;
}
}
}
}