模拟第一人称(鼠标可显)

5 篇文章 0 订阅

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraMove : MonoBehaviour
{

    [SerializeField]
    private float moveSpeed;

    float xx = -90f;
    float yy = 0.0f;


    [SerializeField]
    private float yMinLimit = -50, yMaxLimit = 40;//俯仰角

    public bool obj_retyrn;
    //跳
    private bool stop;


    private Vector3 targetScreenpos;//拖拽物体的屏幕坐标
    private Vector3 targetWorldpos;//拖拽物体的世界坐标
    private Vector3 mouseScreenpos;//鼠标的屏幕坐标
    private Vector3 offset;//偏移量
    public Transform target;//拖拽物体

    void Start()
    {

    }

    void Update()
    {

        //移动
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");

        transform.Translate(h * moveSpeed * Time.deltaTime, 0, v * moveSpeed * Time.deltaTime);

        //旋转
        Quaternion rotation = Quaternion.Euler(yy, xx, 0.0f);

        if (Input.GetMouseButton(1))
        {
            xx += Input.GetAxis("Mouse X") * 2;
            yy -= Input.GetAxis("Mouse Y") * 2;

            yy = ClampAngle(yy, yMinLimit, yMaxLimit);

            transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * 400);

        }

        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                //CheckButton(hit.collider.gameObject);
                //print(hit.collider.gameObject.name);


            }
        }
        if (Input.GetKeyDown(KeyCode.Space)&& stop==false)
        {
            transform.GetComponent<Rigidbody>().AddForce(Vector3.up * 150);
            StartCoroutine(Yanshi());
            stop = true;
        }

    }


    private void OnMouseDrag()
    {

        if (Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                if (hit.collider.tag.Equals("Tools"))
                {
                    print(hit.collider.gameObject.name);
                    hit.collider.gameObject.transform.position = new Vector3(hit.point.x, transform.position.y, hit.point.z);
                }

            }
        }

    }



    /// <summary>
    /// 检查按钮事件
    /// </summary>




    float ClampAngle(float angle, float min, float max)
    {
        if (angle < -360)
            angle += 360;
        if (angle > 360)
            angle -= 360;
        return Mathf.Clamp(angle, min, max);
    }



    IEnumerator Chaizhuang()
    {
        yield return new WaitForSeconds(3);

    }
    IEnumerator Yanshi()
    {
        yield return new WaitForSeconds(0.8f);
        stop = false;
    }


}

把此脚本挂在胶囊体上,胶囊体挂相机,注意初设速度

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值