位移:
transform.Translate (Vector3.forward*Time.deltaTime*100f);
transform.position+=transform.forward*Time.deltaTime*100f;
注意区分上面两句话,第一句话的移动是相对于自身的移动
第二句移动是全局位置
在第一句话和第二句话实现的效果一样
public int type;
private float passDis=0;
private float passTime=Time.time;
void FixedUpdate () {
transform.position += currentPlayer.transform.forward * Time.deltaTime * currentPlayer.GetSpeed ();
//子弹的位置是朝子弹前方移动 移动的过程中受重力影响
if (type == 2) {//说明是三发制子弹的其中一颗,需要重力
transform.position+=transform.forward*Time.deltaTime*80f;
float temp = 5 * (Time.time - passTime) * (Time.time - passTime) * 1f;
transform.position -= new Vector3 (0, temp - passDis, 0);
passDis = temp;// g * t^2 /2
// Debug.Log("这一帧下降的距离 以及实际走过的距离:"+ (temp - passDis) + " "+temp);
//模拟导弹追踪
transform.position=Vector3.MoveTowards(transform.position,targetPlayer.transform.position+new Vector3(0,2,0),Time.deltaTime*50);//80
transform.up = targetPlayer.transform.position - this.transform.position;//朝向
//播放粒子特效
#region 播放特效重载 该特效现在用于播放保护技能的特效,别的暂时不要用该方法
public static void PlayFxAt( Transform posTrans, Vector3 offset, string name,float time,bool isParent=false)//不要目标 int targetPlayerID,目标是攻击的时候点到谁算谁
{
GameObject fxPrefab = MonoBehaviour.Instantiate ( (GameObject)Resources.Load ("Partical/" + name), posTrans.position+offset, Quaternion.identity) as GameObject;
if (isParent)
fxPrefab.transform.parent = posTrans;
else
Debug.Log ("不跟随的特效");
ParticleSystem fx1 = fxPrefab.GetComponent<ParticleSystem>();
fx1.Play ();
// fx.transform.position = player.transform.position;//位置赋值
// ParticleSystem fx1 = fx.GetComponent<ParticleSystem>();
// fx1.Play();
Debug.Log ("按照指定位置播放粒子:"+fxPrefab.name);
GameObject.Destroy(fxPrefab.gameObject,time);
// GameObject objPrefab = MonoBehaviour.Instantiate ((GameObject)Resources.Load ("bullet"), Vector3.zero, Quaternion.identity) as GameObject;
// gameObject.GetCompoment<ParticleSystem>().Play();
//找到
}
#endregion
/// <summary>
/// 更换材质
/// </summary>
/// <param name="name">贴图名称</param>
public void ChangeMaterial1(string name)
{
mt=Resources.Load("Materials/"+name) as Material ;//加载出来作为对象
//Renderer[] skinMR = this.GetComponentsInChildren<Renderer>();
Renderer[] skinMR = this.GetComponentsInChildren<SkinnedMeshRenderer>();
foreach (var p in skinMR) {
Debug.Log ("这一个的: tag: "+p.gameObject.tag+ " "+p.gameObject.name);
if (p.gameObject.tag == "Model") {
p.sharedMaterial = mt;
return;
}
//skinMR [1].sharedMaterial = mt;
}
}
#region 发射三发装 以及动画
public void BulletShoot1(int playerID, int targetID ,float angle=15f )//第三个参数暂时不用
{
// Debug.Log ("同步一枚子弹playerID to targetID" + playerID +" "+targetID);
Debug.Log ("发射三发制子弹");
if (playerID == KPlayer.I.playerInfo.id) {
Debug.Log ("");
}
KPlayer player = KPlayerManager.I.FindPlayer (playerID);
// GameObject bu=(GameObject)Resources.Load("Item/bullet");
for (int i = 0; i < 3; i++) {
bullet[i]=MonoBehaviour.Instantiate((GameObject)Resources.Load("Item/bullet1"),Vector3.zero,Quaternion.identity) as GameObject;
GameObject.Destroy (bullet[i], 5f);
bullet[i].GetComponent<bullet_trigger> ().currentPlayer = player;
bullet[i].transform.position = player.trans.position+new Vector3( 0,3f,0);
}
KPlayer target = KPlayerManager.I.FindPlayer( targetID ); //player.targetPlayerID
if (target) {
Vector3 y = target.trans.position - player.trans.position;
bullet[1].transform.localRotation = Quaternion.LookRotation (y);
bullet[1].transform.rotation = Quaternion.Euler (bullet[1].transform.eulerAngles );
bullet[0].transform.rotation = Quaternion.Euler (bullet[1].transform.eulerAngles + new Vector3 (0, -10, 0));
bullet[2].transform.rotation = Quaternion.Euler (bullet[1].transform.eulerAngles + new Vector3 (0, 10, 0));
} else {
bullet[0].transform.rotation = Quaternion.Euler (bullet[1].transform.eulerAngles + new Vector3 (0, -10, 0));
bullet[2].transform.rotation = Quaternion.Euler (bullet[1].transform.eulerAngles + new Vector3 (0, 10, 0));
Debug.Log ("发射的子弹没有朝向啊 -----------------targetid:"+targetID);
}
}
#endregion
这句话
transform.rotation = Quaternion.Euler(transform.eulerAngles + (new Vector3(x,y,z));
如何修改gui的参数
void OnGUI()
{
string aa = "我们都很好";
GUIStyle bb=new GUIStyle();
bb.normal.background = null; //这是设置背景填充的
bb.normal.textColor=new Color(1,0,0); //设置字体颜色的
bb.fontSize = 40; //当然,这是字体颜色
GUI.Label(new Rect(0, 0, 200, 200), aa,bb);
}