AndreyMust19 08 фев 2013, 17:31
Вот вчера писал скрипт оружия:
Используется csharp
using UnityEngine;
using System.Collections;
public class Firearm : Item /* MonoBehaviour */{
public GameObject bullet;
public Vector3 mouthOffset;
public float pulse = 50.0f;
private GameObject respawnObj;
public override bool Use(AvatarInfo who) { //public bool Use()
respawnObj = (GameObject)Object.Instantiate(bullet, transform.position+mouthOffset, Quaternion.identity);
respawnObj.rigidbody.AddForce(pulse*transform.forward);
return true;
}
}
В комментах написал на что вам надо заменить чтобы у вас заработало. В
mouthOffset укажите локальное смещение точки, откуда будет вылетать пуля. А этот скрипт повесьте на префаб пули (
bullet в пред. скрипте):
Используется csharp
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Collider))]
[RequireComponent(typeof(Rigidbody))]
public class Bullet : MonoBehaviour {
private const float lifePeriod = 5.0f;
private float timer = lifePeriod;
void FixedUpdate() {
if (timer > 0.0f) timer -= Time.fixedDeltaTime;
else Slay();
}
GameObject go;
void OnCollisionEnter(Collision other) {
go = other.gameObject;
// в любом случае - играем звук, в зависимости от физ. материала
Hit(go, go.transform.root.gameObject);
}
private void Hit(GameObject part, GameObject root) {
// если попали в Player - сливаем ему здоровье, спецэффект крови
// если в предмет - убавляем его прочность
// если любое другое (стена, пол) - рисуем декаль и спец-эффект дырки
Slay();
}
// "уничтожаем" пулю, на самом деле просто отключаем ее
private void Slay() {
enabled = false;
gameObject.active = false;
GameObject.Destroy(gameObject, 10.0f);
}
}
На пули, разумеется, должен быть какой-нибудь коллайдер и компонент Rigidbody.
А менять направление камеры и управлять перемещением по уровню должен другой скрипт.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами