Ajuda com o recuo da arma Jogo de Fps no unity
2 participantes
Página 1 de 1
Ajuda com o recuo da arma Jogo de Fps no unity
Ei pessoal então eu tenho esse problema não consigo encontrar um script simples que apenas faça a câmera do player recuar, alguém pode por favor me ajudar com um script que vai fazer a câmera recuar? preciso que a arma mova para X e Y como realmente é um Recuo pois a minha parece uma arma laser kkkkkkkkkk... Obrigado antecipadamente caras;D
se vc perceber o tiro ta acertando no mesmo lugar sempre e isso não é bom
se vc perceber o tiro ta acertando no mesmo lugar sempre e isso não é bom
Baidu3pcs- Iniciante
- PONTOS : 2450
REPUTAÇÃO : 1
Respeito as regras :
Re: Ajuda com o recuo da arma Jogo de Fps no unity
De uma olhada:
Eu preferencialmente gosto mais do tipo que usa Raycast em posições aleatórias, porém esse do video também é funcional.
Eu preferencialmente gosto mais do tipo que usa Raycast em posições aleatórias, porém esse do video também é funcional.
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Ajuda com o recuo da arma Jogo de Fps no unity
Cara eu não entendi muito bem pois meu inglês é bem merda kkkkkkkkk... Você manja de programação? pode me dar uma ajudar? eu te passo os scriptsrafaelllsd escreveu:De uma olhada:
Eu preferencialmente gosto mais do tipo que usa Raycast em posições aleatórias, porém esse do video também é funcional.
Base das Armas:
- Código:
using UnityEngine;
using System.Collections;
public abstract class WeaponBase : MonoBehaviour {
public BulletBehaviour bullet;
public Transform canoArma;
public Animation animationGun;
public AnimationClip reloadAnimation;
public AnimationClip fireAnimation;
public ParticleSystem fireParticle;
public AudioSource shotSound;
public AudioSource reloadSound;
//Zoom
public Animation animationCubeGun;
public AnimationClip zoomIn;
public AnimationClip zoomOut;
public float zoomAim = 30;
private float startZoom;
private bool inZoom = false;
///
//FIre
public float fireRate = 2;
private float currentTimeToFire = 0;
private bool canFire = true;
public int amountBullets = 16;
public int munition = 64;
public float powerShot = 100;
public float range = 500;
private int initBullets;
public float timeToPlayReload = 0.1f;
private float currentTimeToPlayReload = 0;
//
// Use this for initialization
protected void Start () {
initBullets = amountBullets;
startZoom = Camera.main.fieldOfView;
}
// Update is called once per frame
protected void Update () {
if(canFire == false){
currentTimeToFire += Time.deltaTime;
if(currentTimeToFire > fireRate){
currentTimeToFire = 0;
canFire = true;
}
}
currentTimeToPlayReload += Time.deltaTime;
if (animationGun.isPlaying && animationGun.clip == reloadAnimation)
canFire = false;
//removerFuturamente
// currentTimeToPlayReload += Time.deltaTime;
//
// if(animationGun.isPlaying == true){
// canFire = false;
// }
// else{
// canFire = true;
// }
//RemoverFuturamente
}
public void Shoot(){
if(canFire == true && amountBullets > 0){
animationGun.clip = fireAnimation;
animationGun.Play();
fireParticle.Emit(1);
canFire = false;
amountBullets--;
shotSound.Play();
bullet.powerShot = powerShot;
bullet.range = range;
OnShoot();
currentTimeToPlayReload = 0;
}
else if(amountBullets == 0){
ReloadWeapon();
}
}
abstract public void OnShoot();
public void ReloadWeapon(){
if(amountBullets < initBullets && currentTimeToPlayReload > timeToPlayReload){
if(munition > 0){
CancelZoom();
if(amountBullets <= initBullets){
int tempBullets = initBullets-amountBullets;
if(tempBullets >= munition)
tempBullets = munition;
amountBullets += tempBullets;
munition -= tempBullets;
}
animationGun.clip = reloadAnimation;
animationGun.Play();
reloadSound.Play();
}
}
}
public void Zoom(){
if(inZoom == false && !animationCubeGun.isPlaying && !animationGun.isPlaying){
UseZoom();
}
else if(inZoom == true && !animationCubeGun.isPlaying && !animationGun.isPlaying){
CancelZoom();
}
}
private void UseZoom(){
if(inZoom == false){
animationCubeGun.clip = zoomIn;
animationCubeGun.Play();
inZoom = true;
Camera.main.fieldOfView = zoomAim;
}
}
private void CancelZoom(){
if(inZoom == true){
animationCubeGun.clip = zoomOut;
animationCubeGun.Play();
inZoom = false;
Camera.main.fieldOfView = startZoom;
}
}
// void OnGUI() {
// if(!inZoom)
// GUI.Label(new Rect(Screen.width/2, Screen.height/2, 100, 20), "+");
// }
}
Script que vai nas armas:
- Código:
using UnityEngine;
using System.Collections;
public class SMGBehaviour : WeaponBase {
private WeaponBase currentGun;
// Use this for initialization
void Start () {
currentGun = GetComponentInChildren<WeaponBase> ();
base.Start();
}
// Update is called once per frame
void Update () {
if (Input.GetButton ("Fire1")) {
currentGun.Shoot ();
}
base.Update();
}
override public void OnShoot(){
Instantiate(bullet, canoArma.position, transform.rotation);
}
}
Baidu3pcs- Iniciante
- PONTOS : 2450
REPUTAÇÃO : 1
Respeito as regras :
Re: Ajuda com o recuo da arma Jogo de Fps no unity
Eu fiz esse script a muito tempo, mais ele ainda é funcional, só que ele usa Raycast e não Instantiate.
Range: É o tanto que os tiros irão espalhar.
Distance: Alcance dos tiros.
TimeToFire: Tempo de tiro.
Mark: Marca da bala na parede.
- Código:
public Camera camera;
public float range = 0.05f;
public float distance = 100;
public float timeToFire = 0.15f;
public GameObject mark;
Vector3 shotPosition;
Vector3 shotPosNormal;
bool canFire;
void Start () {
canFire = true;
}
void Update () {
if (Input.GetMouseButton (0) && canFire) {
StartCoroutine ("timer");
canFire = false;
Shot ();
}
}
void Shot () {
RaycastHit hit;
if (Physics.Raycast (camera.ViewportPointToRay(new Vector3(0.5f + Random.Range(-range, range), 0.5f + Random.Range(-range, range) * 2, 0)), out hit, distance)) {
if (hit.collider) {
shotPosition = hit.point;
shotPosNormal = hit.normal;
ShotMark ();
}
}
}
void ShotMark () {
GameObject instMark = Instantiate (mark, shotPosition, Quaternion.identity)as GameObject;
instMark.transform.up = shotPosNormal;
Destroy (instMark, 1);
}
IEnumerator timer () {
yield return new WaitForSeconds (timeToFire);
canFire = true;
}
}
Range: É o tanto que os tiros irão espalhar.
Distance: Alcance dos tiros.
TimeToFire: Tempo de tiro.
Mark: Marca da bala na parede.
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Ajuda com o recuo da arma Jogo de Fps no unity
esse é o script da bala? da arma? ou a weaponbase?rafaelllsd escreveu:Eu fiz esse script a muito tempo, mais ele ainda é funcional, só que ele usa Raycast e não Instantiate.
- Código:
public Camera camera;
public float range = 0.05f;
public float distance = 100;
public float timeToFire = 0.15f;
public GameObject mark;
Vector3 shotPosition;
Vector3 shotPosNormal;
bool canFire;
void Start () {
canFire = true;
}
void Update () {
if (Input.GetMouseButton (0) && canFire) {
StartCoroutine ("timer");
canFire = false;
Shot ();
}
}
void Shot () {
RaycastHit hit;
if (Physics.Raycast (camera.ViewportPointToRay(new Vector3(0.5f + Random.Range(-range, range), 0.5f + Random.Range(-range, range) * 2, 0)), out hit, distance)) {
if (hit.collider) {
shotPosition = hit.point;
shotPosNormal = hit.normal;
ShotMark ();
}
}
}
void ShotMark () {
GameObject instMark = Instantiate (mark, shotPosition, Quaternion.identity)as GameObject;
instMark.transform.up = shotPosNormal;
Destroy (instMark, 1);
}
IEnumerator timer () {
yield return new WaitForSeconds (timeToFire);
canFire = true;
}
}
Range: É o tanto que os tiros irão espalhar.
Distance: Alcance dos tiros.
TimeToFire: Tempo de tiro.
Mark: Marca da bala na parede.
Baidu3pcs- Iniciante
- PONTOS : 2450
REPUTAÇÃO : 1
Respeito as regras :
Re: Ajuda com o recuo da arma Jogo de Fps no unity
É da arma, a bala é feita com o raycast.
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Tópicos semelhantes
» Ajuda para fazer uma Arma
» Ajuda com jogo tangram no unity
» Preciso de ajuda para implementação do sistema de score no jogo na unity
» [Ajuda]Animação na arma
» [Ajuda] Arma/Bala
» Ajuda com jogo tangram no unity
» Preciso de ajuda para implementação do sistema de score no jogo na unity
» [Ajuda]Animação na arma
» [Ajuda] Arma/Bala
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos