zoukankan      html  css  js  c++  java
  • Unity3d 札记-Tanks Tutorial 知识点汇总---如何发射子弹

    发射子弹  需要

    1发射坐标 ----- Transform FireTransform

    2子弹  ----- GameObject Shell

    3相关大小的力  ----- float maxForce

    4最长发射时间  ----float maxChargingTime

    5蓄力槽  ------- Slider AimSlider

    6相关音效  -----AudioSource

     

     AimSlider 不需要拖动条也不需要背景

     

     通过设置FillArea 和Fill 来做出图示效果。

     Po一下代码

    using UnityEngine;
    using UnityEngine.UI;
    
    public class TankShooting : MonoBehaviour
    {
        public int m_PlayerNumber = 1;       
        public Rigidbody m_Shell;            
        public Transform m_FireTransform;    
        public Slider m_AimSlider;           
        public AudioSource m_ShootingAudio;  
        public AudioClip m_ChargingClip;     
        public AudioClip m_FireClip;         
        public float m_MinLaunchForce = 15f; 
        public float m_MaxLaunchForce = 30f; 
        public float m_MaxChargeTime = 0.75f;
    
        
        private string m_FireButton;         
        private float m_CurrentLaunchForce;  
        private float m_ChargeSpeed;         
        private bool m_Fired;                
    
    
        private void OnEnable()
        {
            m_CurrentLaunchForce = m_MinLaunchForce;
            m_AimSlider.value = m_MinLaunchForce;
        }
    
    
        private void Start()
        {
            m_FireButton = "Fire" + m_PlayerNumber;
    
            m_ChargeSpeed = (m_MaxLaunchForce - m_MinLaunchForce) / m_MaxChargeTime;
        }
        
    
        private void Update()
        {
            // Track the current state of the fire button and make decisions based on the current launch force.
            m_AimSlider.value = m_CurrentLaunchForce;
    
            if (m_CurrentLaunchForce >= m_MaxLaunchForce && !m_Fired) {
                m_CurrentLaunchForce = m_MaxLaunchForce;
                Fire ();
            } else if (Input.GetButtonDown (m_FireButton)) {
                m_Fired = false;
                m_CurrentLaunchForce = m_MinLaunchForce;
                m_ShootingAudio.clip = m_ChargingClip;
                m_ShootingAudio.Play ();
            } else if (Input.GetButton (m_FireButton) && !m_Fired) {
                m_CurrentLaunchForce += m_ChargeSpeed * Time.deltaTime;
                m_AimSlider.value = m_CurrentLaunchForce;
            } else if (Input.GetButtonUp (m_FireButton)&& !m_Fired) {
                Fire ();
            }
        }
    
    
        private void Fire()
        {
            // Set the fired flag so only Fire is only called once.
            m_Fired = true;
    
            // Create an instance of the shell and store a reference to it's rigidbody.
            Rigidbody shellInstance =
                Instantiate (m_Shell, m_FireTransform.position, m_FireTransform.rotation) as Rigidbody;
    
            // Set the shell's velocity to the launch force in the fire position's forward direction.
            shellInstance.velocity = m_CurrentLaunchForce * m_FireTransform.forward; ;
    
            // Change the clip to the firing clip and play it.
            m_ShootingAudio.clip = m_FireClip;
            m_ShootingAudio.Play ();
    
            // Reset the launch force.  This is a precaution in case of missing button events.
            m_CurrentLaunchForce = m_MinLaunchForce;
        }
    }
  • 相关阅读:
    ObjectiveC字符串处理
    分享 10 个 jQuery 的语言翻译插件
    30 个实用的 jQuery 选项卡/导航教程推荐
    iphoneCocos2D游戏开发
    cocos2d和unity3d的比较
    将NSString转换编码集变为GBK或GB2312
    超过 40 款很有用而且很新的 jQuery 插件
    表格单元的表现形式
    ShareKit
    UI Prototype Design IDE( 界面原型设计工具 )
  • 原文地址:https://www.cnblogs.com/dongfangliu/p/5803681.html
Copyright © 2011-2022 走看看