unity3d 子弹脚本的问题。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3d 子弹脚本的问题。相关的知识,希望对你有一定的参考价值。
var explosion : GameObject;
function Update ()
function OnCollisionEnter(collision : Collision)
var obj : GameObject = collision.gameObject;
if(collision.gameObject.name=="My Tank 02")
var contact : ContactPoint = collision.contacts[0];
var rotation = Quaternion.FromToRotation(Vector3.up, contact.normal);
var instantiatedExplosion : GameObject = Instantiat(explosion,contact.point,rotation);
Destroy(gameObject);
Destroy( obj);
else
Destroy(gameObject,2);
这是我写的子弹脚本,现在的情况是,子弹碰撞到My Tank 02的时候My Tank 02跟子弹都消失,然后出一堆火。
请问如果想再加上:
过2秒后火消失。
子弹飞出2秒后在子弹消失的地方出火,火2秒消失。
代码应该怎样添加呢?
var float: timecount=0.0;
timecount+=Time.deltaTime;
if(timecount>=2.0F)
这里执行你两秒后要执行的代码
timecount=0.0;
具体怎么控制你自己再调节,这只是大概方法 参考技术A Void Start()
StartCoroutine( WaitAndDestroy(2.0F) );
IEnumerator WaitAndDestory( float waitTime)
yield return new WaitForSeconds( waitTime);
Destroy( this.gameObject )
参考技术B WaitForSeconds(); 用这个可以解决追问
能把具体的代码跟思路写下来吗?
塔防游戏学习日记之朝敌人发射子弹
检测到炮塔内敌人进入以后,当然下一步就是要向他们发射子弹。
接下来我们来做朝敌人发射子弹的相关操作。
分析一下,要向敌人发射子弹,需要有攻击速度,简单的计时器,子弹预设体,发射位置。
首先在UNITY里炮塔下面创建一个子物体位于炮口附近用于作为子弹的发射位置。
接下来就是写脚本了,在炮塔的脚本下面写。
先挂出脚本,再讲一些注意事项。
public class TurretAttack : MonoBehaviour { public List<GameObject> enemys = new List<GameObject>(); public Transform head; private void OnTriggerEnter(Collider other) { if (other.tag == "enemy") { enemys.Add(other.gameObject); } } private void OnTriggerExit(Collider other) { if (other.tag == "enemy") { enemys.Remove(other.gameObject); } } public float attackTimes = 1;//控制攻击速度 private float times=0;//计时器控制攻击速度 public GameObject buttlePerfab;//子弹预制体 public Transform firePosition;//定义子弹发射点 private void Start() { times = attackTimes;//确保至少发射一枚子弹 } private void Update() { for (int i = 0; i <= enemys.Count - 1; i++) { //敌人在炮塔范围内销毁后移除集合 if (enemys[i] == null) { enemys.RemoveAt(i); } } //在进入炮塔范围后开始计时 if (enemys.Count > 0) { times += Time.deltaTime; } if (enemys.Count > 0)//这个是改变炮塔朝向的,暂时不必理会 { Vector3 targetPosition = enemys[0].transform.position; targetPosition.y = head.position.y; head.LookAt(targetPosition); } if (enemys.Count>0&× >= attackTimes)//判断发射条件 { times -= attackTimes; attack(); } } void attack()//攻击方法 { GameObject bullet= GameObject.Instantiate(buttlePerfab, firePosition.position, firePosition.rotation); bullet.GetComponent<StaTurBullet>().SetTarget(enemys[0].transform);//调用StaTurBullet中的制定目标方法 } }
大约就是这样了,别忘了在unity里指定子弹预制体和发射点,不然会报空引用异常。
注意这时候实例化的子弹上如果没写脚本的话,子弹会停在那,而不会飞出,下次写子弹的脚本。
子弹预制体随便做就行了,注意添加刚体,istrigger,取消重力
以上是关于unity3d 子弹脚本的问题。的主要内容,如果未能解决你的问题,请参考以下文章