坦克移动

2 篇文章 0 订阅
1 篇文章 0 订阅
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);
		}

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值