摄像头跟随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坐标 ? ? }
|