坦克移动

来源:互联网 发布:管家婆辉煌网络破解版 编辑:程序博客网 时间:2024/04/28 07:43
using UnityEngine;using System.Collections;using UnityStandardAssets.Utility;using TouchControlsKit;public class TankMove : MonoBehaviour {// 坦克移动变量public float moveSpeed = 20.0f;public float rotSpeed = 50.0f;private Rigidbody rbody;private Transform tr;// jianpanprivate float h,v;private PhotonView pv = null;//主摄像机追踪decampivot游戏对象public Transform camPivot;//坦克位置和旋转信息变量设置初始值private Vector3 currPos = Vector3.zero;private Quaternion currRot = Quaternion.identity;//12月4日改动void Awake () {rbody = GetComponent<Rigidbody> ();tr = GetComponent<Transform> ();pv = GetComponent<PhotonView> ();//12月4日改动pv.synchronization = ViewSynchronization.Unreliable;pv.observed  = this;if (pv.isMine) {// 为主摄像机中的SmoothFollow脚本设置追中对象Camera.main.GetComponent<SmoothFollow> ().target = camPivot;//将Rigidbody重心设置为最低值,为了与现实中坦克类似rbody.centerOfMass = new Vector3 (0.0f, -0.5f, 0.0f);} else {rbody.isKinematic = true;//12月4日改动}currPos = tr.position;currRot = tr.rotation;}void OnPhotonSerializeView(PhotonStream stream,PhotonMessageInfo info){//传送本地坦克位置和炮塔信息if (stream.isWriting) {stream.SendNext (tr.position);stream.SendNext (tr.rotation);} else {currPos = (Vector3)stream.ReceiveNext();currRot = (Quaternion)stream.ReceiveNext();}}// Update is called once per framevoid Update () {if (pv.isMine) {//h = Input.GetAxis ("Horizontal");h = InputManager.GetAxis( "dPad", "Horizontal" );;v = InputManager.GetAxis( "dPad","Vertical");//旋转和移动处理Debug.Log(h);tr.Rotate (Vector3.up * rotSpeed * h * Time.deltaTime*0.25f);tr.Translate (Vector3.forward * v * moveSpeed * Time.deltaTime*0.25f);} else {tr.position = Vector3.Lerp (tr.position, currPos, Time.deltaTime * 3.0f);tr.rotation = Quaternion.Slerp (tr.rotation, currRot, Time.deltaTime * 3.0f);}}}

0 0