图形学实验 警察抓小偷

图形学实验 警察抓小偷

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;
            }
        }
    }
}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值