Unity3d实战脚本代码000

摄像头跟随hero移动:

    public Transform hero;
    private Vector3 vec;
     
    void Start()
    {
        vec = transform.position - hero.position; 
    }


    void Update()
    {
        transform.position = vec + hero.position;
    }

鼠标点击hero移动:

    public Animator anim;
    public NavMeshAgent naver;
    
    void Update()
    {
        if (Input.GetMouseButton(0)) {  //判断鼠标点击(左键)
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);    //把鼠标点击的位置转化成射线
            RaycastHit hit; //保存碰撞信息
/*
    public static bool Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance);  
    ray:射线结构体的信息,包括起点,方向;也就是一条射线

    hitinfo:这条射线所碰撞物体的相关信息;

    maxDistance:这条射线的最大距离;
    以射线ray经过的maxDistance长度之内,与第一个对象进行的物理碰撞的信息,存储在hitInfo中;如果有碰撞物体,返回true, 反之false;
*/
            if (Physics.Raycast(ray, out hit)) {    //射线发生碰撞输出碰撞信息
                naver.SetDestination(hit.point);    //移动到碰撞位置(导航到目标点)
            }
        }
        anim.SetFloat("speed", naver.velocity.magnitude);   //速度与动画speed同步
/*
Animator. SetFloat(string name, float value);
    name 该参数的名称。
    value 该参数的新值。
*/
    }

物体碰撞:

 /*
    //有刚体才可以发生碰撞
    private void OnCollisionEnter(Collision collision)  //unity自动调用,碰撞时调用
    {
        Debug.Log("come on");
        Debug.Log(collision.collider);  //用collider获取碰撞体的信息 
        Debug.Log(collision.collider.name);
        Debug.Log(collision.collider.tag);
    }
    private void OnCollisionExit(Collision collision)
    {
        Debug.Log("exit");
    }
    private void OnCollisionStay(Collision collision)
    {
        Debug.Log("stay");
    }
    */
    private void OnTriggerEnter(Collider other) //触发检测
    {
        Debug.Log("triggerender"+other.name+" "+other.tag); //获取触发体的信息
    }

移动炮台(左右移动,点击发射):

    public float speed = 10;
    public float move = 3;
    public GameObject bellet;
  
    void Update()
    {
        if (Input.GetMouseButtonDown(0))    //鼠标点击
        {
            GameObject b=GameObject.Instantiate(bellet,transform.position,transform.rotation);  //instantiate创建有返回值返回一个gameobject
                                                //要复制的物体名,代码物体的坐标,代码物体的旋转//这个函数有五个重载类型
            Rigidbody rig= b.GetComponent<Rigidbody>(); //获取组件的方法GetComponent
            rig.velocity = transform.forward * speed;
        }
        float h = Input.GetAxis("Horizontal"); //(水平) //获取方向键数值(从0到1/-1再到0(按一下变化1))
        float v = Input.GetAxis("Vertical"); //(垂直)
        transform.Translate(new Vector3(h, v, 0) * Time.deltaTime * move);//帧间隔(1秒/每秒帧数)一帧执行一次*帧间隔=1秒(把变化压缩到1秒)(一秒变化1*move)
        //本代码物体运动方法-            x,y,z坐标
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值