Rework hitscaning on cannon fire
This commit is contained in:
parent
ba99bbb4f0
commit
e6fa39fb67
@ -454,9 +454,9 @@ RectTransform:
|
|||||||
m_Father: {fileID: 8183383574400522882}
|
m_Father: {fileID: 8183383574400522882}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 100.00001, y: -25}
|
||||||
m_SizeDelta: {x: 200, y: 50}
|
m_SizeDelta: {x: 200, y: 50}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &3947095809116700151
|
--- !u!222 &3947095809116700151
|
||||||
@ -1114,7 +1114,7 @@ RectTransform:
|
|||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0.775, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 10, y: 0}
|
m_SizeDelta: {x: 10, y: 0}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
@ -1189,8 +1189,8 @@ RectTransform:
|
|||||||
m_Father: {fileID: 7617209483920801355}
|
m_Father: {fileID: 7617209483920801355}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0.775, y: 0}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0.775, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 20, y: 0}
|
m_SizeDelta: {x: 20, y: 0}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
@ -1265,9 +1265,9 @@ RectTransform:
|
|||||||
m_Father: {fileID: 6054892815323966725}
|
m_Father: {fileID: 6054892815323966725}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 100.00001, y: -25}
|
||||||
m_SizeDelta: {x: 200, y: 50}
|
m_SizeDelta: {x: 200, y: 50}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &5251019473499131800
|
--- !u!222 &5251019473499131800
|
||||||
@ -4023,8 +4023,8 @@ RectTransform:
|
|||||||
m_Father: {fileID: 7832311567031281615}
|
m_Father: {fileID: 7832311567031281615}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0.775, y: 0}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0.775, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 20, y: 0}
|
m_SizeDelta: {x: 20, y: 0}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
@ -4234,7 +4234,7 @@ RectTransform:
|
|||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0.775, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 10, y: 0}
|
m_SizeDelta: {x: 10, y: 0}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
@ -4310,9 +4310,9 @@ RectTransform:
|
|||||||
m_Father: {fileID: 4514125314489927979}
|
m_Father: {fileID: 4514125314489927979}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 1
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 200, y: -104.26691}
|
||||||
m_SizeDelta: {x: 441.22693, y: 50}
|
m_SizeDelta: {x: 441.22693, y: 50}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &5662559955727251511
|
--- !u!114 &5662559955727251511
|
||||||
@ -4652,9 +4652,9 @@ RectTransform:
|
|||||||
m_Father: {fileID: 4514125314489927979}
|
m_Father: {fileID: 4514125314489927979}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 200, y: -34.755634}
|
||||||
m_SizeDelta: {x: 441.22693, y: 50}
|
m_SizeDelta: {x: 441.22693, y: 50}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &2360335056540398615
|
--- !u!114 &2360335056540398615
|
||||||
@ -4831,9 +4831,9 @@ RectTransform:
|
|||||||
m_Father: {fileID: 8477939615244931290}
|
m_Father: {fileID: 8477939615244931290}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 1
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 320.61346, y: -25}
|
||||||
m_SizeDelta: {x: 241.2269, y: 20}
|
m_SizeDelta: {x: 241.2269, y: 20}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &5381892342036000582
|
--- !u!114 &5381892342036000582
|
||||||
@ -5332,8 +5332,8 @@ RectTransform:
|
|||||||
m_Father: {fileID: 5471430262505720550}
|
m_Father: {fileID: 5471430262505720550}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0.775, y: 0}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0.775, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 20, y: 0}
|
m_SizeDelta: {x: 20, y: 0}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
@ -5410,9 +5410,9 @@ RectTransform:
|
|||||||
m_Father: {fileID: 8183383574400522882}
|
m_Father: {fileID: 8183383574400522882}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 1
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 320.61346, y: -25}
|
||||||
m_SizeDelta: {x: 241.2269, y: 20}
|
m_SizeDelta: {x: 241.2269, y: 20}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &2623087485492258608
|
--- !u!114 &2623087485492258608
|
||||||
@ -5815,9 +5815,9 @@ RectTransform:
|
|||||||
m_Father: {fileID: 6054892815323966725}
|
m_Father: {fileID: 6054892815323966725}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 1
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 320.61346, y: -25}
|
||||||
m_SizeDelta: {x: 241.2269, y: 20}
|
m_SizeDelta: {x: 241.2269, y: 20}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &7282530242272405843
|
--- !u!114 &7282530242272405843
|
||||||
@ -5970,9 +5970,9 @@ RectTransform:
|
|||||||
m_Father: {fileID: 4514125314489927979}
|
m_Father: {fileID: 4514125314489927979}
|
||||||
m_RootOrder: 2
|
m_RootOrder: 2
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 200, y: -173.77817}
|
||||||
m_SizeDelta: {x: 441.22693, y: 50}
|
m_SizeDelta: {x: 441.22693, y: 50}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &6358657304481751404
|
--- !u!114 &6358657304481751404
|
||||||
@ -7577,9 +7577,9 @@ RectTransform:
|
|||||||
m_Father: {fileID: 8477939615244931290}
|
m_Father: {fileID: 8477939615244931290}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 100.00001, y: -25}
|
||||||
m_SizeDelta: {x: 200, y: 50}
|
m_SizeDelta: {x: 200, y: 50}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &349148022202180518
|
--- !u!222 &349148022202180518
|
||||||
@ -7941,7 +7941,7 @@ RectTransform:
|
|||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
m_AnchorMax: {x: 0.775, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 10, y: 0}
|
m_SizeDelta: {x: 10, y: 0}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
@ -8133,7 +8133,7 @@ GameObject:
|
|||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 0
|
||||||
--- !u!224 &6873527208435646568
|
--- !u!224 &6873527208435646568
|
||||||
RectTransform:
|
RectTransform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@ -218,7 +218,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
cannon: {fileID: 6969840675257017922}
|
cannon: {fileID: 6969840675257017922}
|
||||||
projectile: {fileID: 5630905120393344806, guid: 70e77cdd333989d4193d3d85029d8cbe, type: 3}
|
projectile: {fileID: 5630905120393344806, guid: 70e77cdd333989d4193d3d85029d8cbe, type: 3}
|
||||||
lookDepth: 400
|
lookDepth: 150
|
||||||
cannonForce: 500
|
cannonForce: 500
|
||||||
fireRate: 0.5
|
fireRate: 0.5
|
||||||
fireTimer: 0
|
fireTimer: 0
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -35,20 +35,6 @@ public class CannonScript : MonoBehaviour
|
|||||||
if(fireTimer >= fireRate){
|
if(fireTimer >= fireRate){
|
||||||
Fire();
|
Fire();
|
||||||
fireTimer = 0;
|
fireTimer = 0;
|
||||||
|
|
||||||
RaycastHit hit;
|
|
||||||
|
|
||||||
if (Physics.Raycast(transform.position, lookDir, out hit, Mathf.Infinity))
|
|
||||||
{
|
|
||||||
Debug.DrawRay(transform.position, lookDir * hit.distance, Color.yellow);
|
|
||||||
|
|
||||||
GameObject hitObject = hit.collider.gameObject;
|
|
||||||
|
|
||||||
if (hitObject.tag == "Enemy")
|
|
||||||
{
|
|
||||||
hitObject.GetComponent<Enemy>().IsShot();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}else if(fireTimer < fireRate){
|
}else if(fireTimer < fireRate){
|
||||||
fireTimer += Time.deltaTime;
|
fireTimer += Time.deltaTime;
|
||||||
@ -59,6 +45,18 @@ public class CannonScript : MonoBehaviour
|
|||||||
GameObject proj = Instantiate(projectile, cannon.transform.position, cannon.transform.rotation);
|
GameObject proj = Instantiate(projectile, cannon.transform.position, cannon.transform.rotation);
|
||||||
proj.GetComponent<Projectile>().SetDamage(damage);
|
proj.GetComponent<Projectile>().SetDamage(damage);
|
||||||
proj.GetComponent<Rigidbody>().AddForce(cannonForce * lookDir, ForceMode.Impulse);
|
proj.GetComponent<Rigidbody>().AddForce(cannonForce * lookDir, ForceMode.Impulse);
|
||||||
|
RaycastHit hit;
|
||||||
|
if (Physics.Raycast(transform.position, lookDir, out hit, Mathf.Infinity))
|
||||||
|
{
|
||||||
|
Debug.DrawRay(transform.position, lookDir * hit.distance, Color.yellow, 0.5f);
|
||||||
|
|
||||||
|
GameObject hitObject = hit.collider.gameObject;
|
||||||
|
|
||||||
|
if (hitObject.CompareTag("Enemy"))
|
||||||
|
{
|
||||||
|
hitObject.GetComponent<Enemy>().IsShot();
|
||||||
|
}
|
||||||
|
}
|
||||||
if(bullets > 1){
|
if(bullets > 1){
|
||||||
//Pick random offset from lookDir
|
//Pick random offset from lookDir
|
||||||
for (int i = 0; i < bullets-1; i++)
|
for (int i = 0; i < bullets-1; i++)
|
||||||
@ -66,15 +64,40 @@ public class CannonScript : MonoBehaviour
|
|||||||
proj = Instantiate(projectile, cannon.transform.position, cannon.transform.rotation);
|
proj = Instantiate(projectile, cannon.transform.position, cannon.transform.rotation);
|
||||||
proj.GetComponent<Projectile>().SetDamage(damage);
|
proj.GetComponent<Projectile>().SetDamage(damage);
|
||||||
proj.GetComponent<Rigidbody>().AddForce(cannonForce * (lookDir+offsets[i]), ForceMode.Impulse);
|
proj.GetComponent<Rigidbody>().AddForce(cannonForce * (lookDir+offsets[i]), ForceMode.Impulse);
|
||||||
|
if (Physics.Raycast(transform.position, (lookDir+offsets[i]), out hit, Mathf.Infinity))
|
||||||
|
{
|
||||||
|
Debug.DrawRay(transform.position, (lookDir+offsets[i]) * hit.distance, Color.yellow, 0.5f);
|
||||||
|
|
||||||
|
GameObject hitObject = hit.collider.gameObject;
|
||||||
|
|
||||||
|
if (hitObject.CompareTag("Enemy"))
|
||||||
|
{
|
||||||
|
hitObject.GetComponent<Enemy>().IsShot();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector3 GetMouseWorldPosition(){
|
private Vector3 GetMouseWorldPosition(){
|
||||||
Vector3 screenPos = Mouse.current.position.ReadValue();
|
Vector3 screenPos = Mouse.current.position.ReadValue();
|
||||||
screenPos.z = lookDepth;
|
Ray ray = Camera.main.ScreenPointToRay(screenPos);
|
||||||
Vector3 worldPoint = Camera.main.ScreenToWorldPoint(screenPos);
|
RaycastHit hit;
|
||||||
|
Vector3 worldPoint = Vector3.zero;
|
||||||
|
if (Physics.Raycast(ray, out hit)) {
|
||||||
|
if(hit.transform.gameObject.CompareTag("Enemy")){
|
||||||
|
worldPoint = hit.point;
|
||||||
|
}else{
|
||||||
|
screenPos.z = lookDepth;
|
||||||
|
worldPoint = Camera.main.ScreenToWorldPoint(screenPos);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if(worldPoint == Vector3.zero){
|
||||||
|
screenPos.z = lookDepth;
|
||||||
|
worldPoint = Camera.main.ScreenToWorldPoint(screenPos);
|
||||||
|
}
|
||||||
|
|
||||||
return worldPoint;
|
return worldPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user