Добро пожаловать на сайт "Game Creating CommUnity"
Здравствуйте, уважаемый пользователь!

Возможно, вы впервые на этом сайте и мы очень надеемся, что вам у нас понравится. Администрация сайта сделает всё возможное, чтобы ваше пребывание на сайте было максимально комфортным. Спасибо за внимание!

P.S. Данное окно вас больше не потревожит
Оружие с анимацией - Форум Игроделов
Вс, 22 Июн 2025, 09:05 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Оружие с анимацией
korveenДата: Сб, 23 Ноя 2013, 22:45 | Сообщение # 1
Победитель конкурса GCC
 
Сообщений: 183
Награды: 2
Репутация: 45
Статус: Offline
подправьте пожалуйста скрипт по анимации!

Доступно только для пользователей

дело в том, что некоторая анимация воспроизводится только 1 раз(конкретно бег и ходьба). после остановки не воспроизводится анимация Idle, да и после перезарядки тоже ничего не воспроизводится.. подправьте пожалуйста, кто знает. Анимаций вполне хватает, главное что бы они работали нормально, а не как у меня... в данный момент.
Сделайте чтобы анимация бега была возможно если персонаж идет(то есть зажата хотябы одна из кнопок "Vertical"или/и "Horizontal").
Спасибо!




Сообщение отредактировал korveen - Сб, 23 Ноя 2013, 22:48
 
Сообщениеподправьте пожалуйста скрипт по анимации!

Доступно только для пользователей

дело в том, что некоторая анимация воспроизводится только 1 раз(конкретно бег и ходьба). после остановки не воспроизводится анимация Idle, да и после перезарядки тоже ничего не воспроизводится.. подправьте пожалуйста, кто знает. Анимаций вполне хватает, главное что бы они работали нормально, а не как у меня... в данный момент.
Сделайте чтобы анимация бега была возможно если персонаж идет(то есть зажата хотябы одна из кнопок "Vertical"или/и "Horizontal").
Спасибо!

Автор - korveen
Дата добавления - 23 Ноя 2013 в 22:45
seamanДата: Вс, 24 Ноя 2013, 12:08 | Сообщение # 2
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Тут не править надо, а полностью переписывать. Сорри...
 
СообщениеТут не править надо, а полностью переписывать. Сорри...

Автор - seaman
Дата добавления - 24 Ноя 2013 в 12:08
chapaeffДата: Пт, 28 Фев 2014, 22:20 | Сообщение # 3
 
Сообщений: 48
Награды: 0
Репутация: 12
Статус: Offline
Могу тебе кинуть скрипт на полноценную стрельбу с анимациями.

---------------------------------------------------------------------------------------
Throw Exception
(ノಠ益ಠ)ノ彡┻━┻
Catch Exception
┬──┬ ノ( ゜-゜ノ)
 
СообщениеМогу тебе кинуть скрипт на полноценную стрельбу с анимациями.

Автор - chapaeff
Дата добавления - 28 Фев 2014 в 22:20
ДенисДата: Пт, 28 Фев 2014, 23:15 | Сообщение # 4
 
Сообщений: 5098
Награды: 23
Репутация: 910
Статус: Offline
chapaeff, кидай.Все равно кому-нибудь,да пригодится
 
Сообщениеchapaeff, кидай.Все равно кому-нибудь,да пригодится

Автор - Денис
Дата добавления - 28 Фев 2014 в 23:15
chapaeffДата: Сб, 01 Мар 2014, 13:16 | Сообщение # 5
 
Сообщений: 48
Награды: 0
Репутация: 12
Статус: Offline
Код
var Model : Animation;

 
var range = 100.0;
 
var fireRate = 0.05;
 
var force = 100.0;
 
var damage = 5.0;
 
var bulletsPerClip = 17;
 
var clips = 2;
 
var reloadTime = 0.7;
 
var accuracy = 1;
 
var currentMode = fireMode.semi;
 
var ShootKey : KeyCode;
 
var ReloadKey : KeyCode;

 
var soundFire : AudioClip;
 
var soundReload : AudioClip;
 
var soundEmpty : AudioClip;
 
var bulletHolePrefab : GameObject;
 
var bulletHolePrefabWall : GameObject;
 
var bulletHolePrefabBlood : GameObject;
 
var bulletHoleMetal : GameObject;
 
var layerMask : LayerMask;
 
var muzzleFlash : Renderer;

 
enum fireMode { none, semi, auto}
 
private var bulletsLeft : int = 0;
 
private var allBullets;
 
private var nextFireTime = 0.0;
 
private var mainCamera;
 
private var sound : AudioSource;
 
private var reload : boolean;
 
//var Crosshair : CrossHair;
 
var DrawTime = 1;

 
var guiStyle : GUISkin;
 
var hud : Texture;
 
var gunName : String;

 
function Start () {
 
yield WaitForSeconds(DrawTime);

   bulletsLeft
= bulletsPerClip;
   allBullets
= clips*bulletsPerClip;
   mainCamera
= GameObject.FindWithTag("Main Camera");
   sound
= gameObject.transform.parent.audio;
   muzzleFlash
.enabled = false;
     
 
}

 
function Update() {

 
//если не идет перезарядка, то можно стрелять и перезаряжать, иначе нельзя стрелять и перезаряжать пока перезарядка не пройдет.
   
if (reload==false) {
     
   
if (Input.GetKeyDown(ReloadKey)){
     
Reload();
   
}
     
   
if (Input.GetKeyDown(ShootKey)){
     
if (bulletsLeft >0) {
     
if (currentMode == fireMode.semi) {
       
Fire();
     
}
     
} else {
     sound
.PlayOneShot(soundEmpty);
     
}
   
}
     
   
if (Input.GetKey(ShootKey)){
     
if (currentMode == fireMode.auto) {
     
Fire();
     
}
   
}
   
}

 
}

 
function Fire () {
     
   
// If there is more than one bullet between the last and this frame
   
// Reset the nextFireTime
   
if (Time.time - fireRate > nextFireTime)
    nextFireTime
= Time.time - Time.deltaTime;
     
   
// Keep firing until we used up the fire time
   
while( nextFireTime < Time.time && bulletsLeft != 0) {
   
FireOneShot();
    nextFireTime
+= fireRate;
   
}
 
}

 
function FireOneShot () {
   
//var direction = transform.TransformDirection(Vector3.forward);
   
var direction = transform.TransformDirection(Vector3(Random.Range(-0.01, 0.01) * accuracy, Random.Range(-0.01, 0.01) * accuracy,1));
   
var hit : RaycastHit;

   
Debug.DrawLine(mainCamera.transform.position,direction*range,Color.red); //для отладки
     
     
   
// Проверяем попала ли куда-нибудь пуля
   
if (Physics.Raycast (mainCamera.transform.position, direction, hit, range,layerMask.value)) {
   
var rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
     
   
// если пуля попадает в физический объект то двигаем его
   
if (hit.rigidbody)
     hit
.rigidbody.AddForceAtPosition(force * direction, hit.point);
       

   
// если пуля попала в объект "Untagged" то сделать на нем дырку и приклеить ее к объекту
   
if (hit.transform.tag == "Untagged") {
     
var bulletHole : GameObject = Instantiate (bulletHolePrefab, hit.point, rotation);
     bulletHole
.transform.parent = hit.transform;
     hit
.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);  
     
}
     
     
if (hit.transform.tag == "Concrete") {
     
var bulletHoleWall : GameObject = Instantiate (bulletHolePrefabWall, hit.point, rotation);
     bulletHoleWall
.transform.parent = hit.transform;
     hit
.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);  
       
       
   
}
     
   
if (hit.transform.tag == "Enemy") {
     
var bulletHoleBlood : GameObject = Instantiate (bulletHolePrefabBlood, hit.point, rotation);
     bulletHoleBlood
.transform.parent = hit.transform;
     hit
.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);  
       
   
}
     
     
if (hit.transform.tag == "Metal") {
     
var bulletHoleMetal : GameObject = Instantiate (bulletHoleMetal, hit.point, rotation);
     bulletHoleMetal
.transform.parent = hit.transform;
     hit
.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);  
       
   
}
       
       
   
}
     
   sound
.PlayOneShot(soundFire);
     
   
Model.animation.Rewind("fire");
     
   
Model.animation.CrossFade("fire");
     
   bulletsLeft
--;
     
   
StartCoroutine(ShowMuzzleFlash());
     
 
}

 
// перезарядка
 
function Reload () {

   
if (allBullets >0 && bulletsLeft != bulletsPerClip) {
     
     
if (allBullets > bulletsPerClip) {
       
       
       
     
//Crosshair.EnableCrosshair = false;
       
      reload
= true;
       
      sound
.PlayOneShot(soundReload);
       
     
Model.animation.CrossFade("reload");

     
yield WaitForSeconds(reloadTime);
       
      allBullets
-= bulletsPerClip-bulletsLeft;
       
      bulletsLeft
=bulletsPerClip;
       
      reload
= false;
       
     
//Crosshair.EnableCrosshair = true;
       
     
} else {
       
      reload
= true;
       
      sound
.PlayOneShot(soundReload);

     
yield WaitForSeconds(reloadTime);
       
     
var bullet = Mathf.Clamp(bulletsPerClip,allBullets,bulletsLeft+allBullets);
       
      allBullets
-= (bullet-bulletsLeft);
       
      bulletsLeft
= bullet;
       
      reload
= false;
       
     
}
   
}

   
}
     
 
// показать вспышку от выстрела
 
function ShowMuzzleFlash () {
   muzzleFlash
.transform.localRotation *= Quaternion.Euler(0, 0, Random.Range(-360, 360));
   
//muzzleFlash.transform.localRotation = Quaternion.AngleAxis(Random.value * 360, Vector3.forward);
   muzzleFlash
.enabled = true;
   
yield WaitForSeconds(0.05f);
   muzzleFlash
.enabled = false;
 
}

 
function OnGUI() {
 GUI
.skin = guiStyle;
 GUI
.Label(new Rect(Screen.width - 120,Screen.height - 80,200,50),"        " + gunName + " : " + bulletsLeft + " / " + allBullets);
 
}

 


cool
+ репа если помог)


---------------------------------------------------------------------------------------
Throw Exception
(ノಠ益ಠ)ノ彡┻━┻
Catch Exception
┬──┬ ノ( ゜-゜ノ)


Сообщение отредактировал chapaeff - Сб, 01 Мар 2014, 13:18
 
Сообщение
Код
var Model : Animation;

 
var range = 100.0;
 
var fireRate = 0.05;
 
var force = 100.0;
 
var damage = 5.0;
 
var bulletsPerClip = 17;
 
var clips = 2;
 
var reloadTime = 0.7;
 
var accuracy = 1;
 
var currentMode = fireMode.semi;
 
var ShootKey : KeyCode;
 
var ReloadKey : KeyCode;

 
var soundFire : AudioClip;
 
var soundReload : AudioClip;
 
var soundEmpty : AudioClip;
 
var bulletHolePrefab : GameObject;
 
var bulletHolePrefabWall : GameObject;
 
var bulletHolePrefabBlood : GameObject;
 
var bulletHoleMetal : GameObject;
 
var layerMask : LayerMask;
 
var muzzleFlash : Renderer;

 
enum fireMode { none, semi, auto}
 
private var bulletsLeft : int = 0;
 
private var allBullets;
 
private var nextFireTime = 0.0;
 
private var mainCamera;
 
private var sound : AudioSource;
 
private var reload : boolean;
 
//var Crosshair : CrossHair;
 
var DrawTime = 1;

 
var guiStyle : GUISkin;
 
var hud : Texture;
 
var gunName : String;

 
function Start () {
 
yield WaitForSeconds(DrawTime);

   bulletsLeft
= bulletsPerClip;
   allBullets
= clips*bulletsPerClip;
   mainCamera
= GameObject.FindWithTag("Main Camera");
   sound
= gameObject.transform.parent.audio;
   muzzleFlash
.enabled = false;
     
 
}

 
function Update() {

 
//если не идет перезарядка, то можно стрелять и перезаряжать, иначе нельзя стрелять и перезаряжать пока перезарядка не пройдет.
   
if (reload==false) {
     
   
if (Input.GetKeyDown(ReloadKey)){
     
Reload();
   
}
     
   
if (Input.GetKeyDown(ShootKey)){
     
if (bulletsLeft >0) {
     
if (currentMode == fireMode.semi) {
       
Fire();
     
}
     
} else {
     sound
.PlayOneShot(soundEmpty);
     
}
   
}
     
   
if (Input.GetKey(ShootKey)){
     
if (currentMode == fireMode.auto) {
     
Fire();
     
}
   
}
   
}

 
}

 
function Fire () {
     
   
// If there is more than one bullet between the last and this frame
   
// Reset the nextFireTime
   
if (Time.time - fireRate > nextFireTime)
    nextFireTime
= Time.time - Time.deltaTime;
     
   
// Keep firing until we used up the fire time
   
while( nextFireTime < Time.time && bulletsLeft != 0) {
   
FireOneShot();
    nextFireTime
+= fireRate;
   
}
 
}

 
function FireOneShot () {
   
//var direction = transform.TransformDirection(Vector3.forward);
   
var direction = transform.TransformDirection(Vector3(Random.Range(-0.01, 0.01) * accuracy, Random.Range(-0.01, 0.01) * accuracy,1));
   
var hit : RaycastHit;

   
Debug.DrawLine(mainCamera.transform.position,direction*range,Color.red); //для отладки
     
     
   
// Проверяем попала ли куда-нибудь пуля
   
if (Physics.Raycast (mainCamera.transform.position, direction, hit, range,layerMask.value)) {
   
var rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
     
   
// если пуля попадает в физический объект то двигаем его
   
if (hit.rigidbody)
     hit
.rigidbody.AddForceAtPosition(force * direction, hit.point);
       

   
// если пуля попала в объект "Untagged" то сделать на нем дырку и приклеить ее к объекту
   
if (hit.transform.tag == "Untagged") {
     
var bulletHole : GameObject = Instantiate (bulletHolePrefab, hit.point, rotation);
     bulletHole
.transform.parent = hit.transform;
     hit
.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);  
     
}
     
     
if (hit.transform.tag == "Concrete") {
     
var bulletHoleWall : GameObject = Instantiate (bulletHolePrefabWall, hit.point, rotation);
     bulletHoleWall
.transform.parent = hit.transform;
     hit
.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);  
       
       
   
}
     
   
if (hit.transform.tag == "Enemy") {
     
var bulletHoleBlood : GameObject = Instantiate (bulletHolePrefabBlood, hit.point, rotation);
     bulletHoleBlood
.transform.parent = hit.transform;
     hit
.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);  
       
   
}
     
     
if (hit.transform.tag == "Metal") {
     
var bulletHoleMetal : GameObject = Instantiate (bulletHoleMetal, hit.point, rotation);
     bulletHoleMetal
.transform.parent = hit.transform;
     hit
.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);  
       
   
}
       
       
   
}
     
   sound
.PlayOneShot(soundFire);
     
   
Model.animation.Rewind("fire");
     
   
Model.animation.CrossFade("fire");
     
   bulletsLeft
--;
     
   
StartCoroutine(ShowMuzzleFlash());
     
 
}

 
// перезарядка
 
function Reload () {

   
if (allBullets >0 && bulletsLeft != bulletsPerClip) {
     
     
if (allBullets > bulletsPerClip) {
       
       
       
     
//Crosshair.EnableCrosshair = false;
       
      reload
= true;
       
      sound
.PlayOneShot(soundReload);
       
     
Model.animation.CrossFade("reload");

     
yield WaitForSeconds(reloadTime);
       
      allBullets
-= bulletsPerClip-bulletsLeft;
       
      bulletsLeft
=bulletsPerClip;
       
      reload
= false;
       
     
//Crosshair.EnableCrosshair = true;
       
     
} else {
       
      reload
= true;
       
      sound
.PlayOneShot(soundReload);

     
yield WaitForSeconds(reloadTime);
       
     
var bullet = Mathf.Clamp(bulletsPerClip,allBullets,bulletsLeft+allBullets);
       
      allBullets
-= (bullet-bulletsLeft);
       
      bulletsLeft
= bullet;
       
      reload
= false;
       
     
}
   
}

   
}
     
 
// показать вспышку от выстрела
 
function ShowMuzzleFlash () {
   muzzleFlash
.transform.localRotation *= Quaternion.Euler(0, 0, Random.Range(-360, 360));
   
//muzzleFlash.transform.localRotation = Quaternion.AngleAxis(Random.value * 360, Vector3.forward);
   muzzleFlash
.enabled = true;
   
yield WaitForSeconds(0.05f);
   muzzleFlash
.enabled = false;
 
}

 
function OnGUI() {
 GUI
.skin = guiStyle;
 GUI
.Label(new Rect(Screen.width - 120,Screen.height - 80,200,50),"        " + gunName + " : " + bulletsLeft + " / " + allBullets);
 
}

 


cool
+ репа если помог)

Автор - chapaeff
Дата добавления - 01 Мар 2014 в 13:16
ElcorossoДата: Чт, 18 Июн 2015, 14:48 | Сообщение # 6
Нет аватара
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Cкажи пожалуйста этот скрипт на оружие накладывать надо ?
 
СообщениеCкажи пожалуйста этот скрипт на оружие накладывать надо ?

Автор - Elcorosso
Дата добавления - 18 Июн 2015 в 14:48
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025
Войти Зарегистрироваться