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;
// jianpan
private 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 frame
void 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);
}
}
}
坦克移动
最新推荐文章于 2023-10-12 23:25:00 发布