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;
        }
    }
  • 相关阅读:
    DEDECMS里面DEDE函数解析
    dede数据库类使用方法 $dsql
    DEDE数据库语句 DEDESQL命令批量替换 SQL执行语句
    织梦DedeCms网站更换域名后文章图片路径批量修改
    DSP using MATLAB 示例 Example3.12
    DSP using MATLAB 示例 Example3.11
    DSP using MATLAB 示例 Example3.10
    DSP using MATLAB 示例Example3.9
    DSP using MATLAB 示例Example3.8
    DSP using MATLAB 示例Example3.7
  • 原文地址:https://www.cnblogs.com/dongfangliu/p/5803681.html
Copyright © 2011-2022 走看看