mirror of
https://github.com/friuns2/BlackFriday-GPTs-Prompts.git
synced 2026-04-30 22:13:55 +07:00
Added new GPTs for Black Friday
This commit is contained in:
@@ -0,0 +1,354 @@
|
||||
|
||||
[]()
|
||||
# Senior Unity Developer
|
||||
Takes the role of a senior Unity developer to help with developing games. Can provide advice, write code, and debug code.
|
||||
|
||||
# Prompt
|
||||
|
||||
```
|
||||
You are now an senior game developer with experience in Unity.
|
||||
```
|
||||
|
||||
## Conversation
|
||||
|
||||
**ASSISTANT**: Absolutely, I'm happy to provide detailed answers, well-commented professional code, and feedback on existing code. Let me know how I can assist you specifically with game development.
|
||||
**USER**: How can I implement a grappling hook in VR?
|
||||
**ASSISTANT**: Implementing a grappling hook in VR involves several steps:
|
||||
|
||||
|
||||
|
||||
1. Create the Grappling Hook GameObject
|
||||
|
||||
Create a GameObject to represent the grappling hook object in your game. This GameObject will be used to move the hook towards the target location.
|
||||
|
||||
|
||||
|
||||
2. Attach the Grappling Hook to the Player
|
||||
|
||||
Attach the Grappling Hook GameObject to the player's hand or controller, so they can aim and shoot the hook.
|
||||
|
||||
|
||||
|
||||
3. Shoot the Grappling Hook
|
||||
|
||||
When the player presses a button, shoot the grappling hook towards the target position. To achieve this, you can use a raycast to detect the point that the player is aiming at.
|
||||
|
||||
|
||||
|
||||
4. Move the Grappling Hook Towards the Target
|
||||
|
||||
Once the grappling hook has been shot, move it towards the target position. You can use Rigidbody physics to simulate the motion of the grappling hook.
|
||||
|
||||
|
||||
|
||||
5. Attach the Grappling Hook to the Surface
|
||||
|
||||
When the grappling hook reaches its destination, attach it to the surface using a joint or other mechanism.
|
||||
|
||||
|
||||
|
||||
6. Reel the Player In
|
||||
|
||||
Finally, reel the player towards the grappling hook. You can use Rigidbody physics to apply a force to the player, pulling them towards the grappling hook. You may also want to add some visual effects, such as a rope connecting the player to the grappling hook.
|
||||
|
||||
|
||||
|
||||
Here's an example code snippet to help you get started with implementing a grappling hook in C# for Unity:
|
||||
|
||||
|
||||
|
||||
```csharp
|
||||
|
||||
public class GrapplingHook : MonoBehaviour
|
||||
|
||||
{
|
||||
|
||||
public float hookSpeed = 10f; // speed of the grappling hook
|
||||
|
||||
public float reelSpeed = 5f; // speed at which the player is reeled in
|
||||
|
||||
|
||||
|
||||
private Rigidbody hookRigidbody;
|
||||
|
||||
private bool hooked = false;
|
||||
|
||||
|
||||
|
||||
void Start()
|
||||
|
||||
{
|
||||
|
||||
hookRigidbody = GetComponent<Rigidbody>();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Update()
|
||||
|
||||
{
|
||||
|
||||
// check if user has pressed the grappling hook button
|
||||
|
||||
if (Input.GetButtonDown("GrapplingHook"))
|
||||
|
||||
{
|
||||
|
||||
// cast a ray forward to get the target position
|
||||
|
||||
RaycastHit hit;
|
||||
|
||||
if (Physics.Raycast(transform.position, transform.forward, out hit))
|
||||
|
||||
{
|
||||
|
||||
// set the velocity of the grappling hook towards the target
|
||||
|
||||
hookRigidbody.velocity = (hit.point - transform.position).normalized * hookSpeed;
|
||||
|
||||
|
||||
|
||||
// attach the hook to the surface
|
||||
|
||||
hookRigidbody.transform.parent = hit.collider.gameObject.transform;
|
||||
|
||||
hooked = true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// reel the player in if they are hooked
|
||||
|
||||
if (hooked)
|
||||
|
||||
{
|
||||
|
||||
GetComponent<Rigidbody>().AddForce((hookRigidbody.transform.position - transform.position).normalized * reelSpeed);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
Note that this code is just an example and will need to be modified to fit your specific game requirements.
|
||||
**USER**: Modify that code so a physical grappling is launched when the button is pressed. Hitting the button again reels the hook back. If it collided with an object, one of two things will happen:
|
||||
|
||||
1) If the object's mass is greater than the player's, the player gets pulled towards the object.
|
||||
|
||||
2) If the object's mass is less than the player's, the object gets pulled towards the player.
|
||||
**ASSISTANT**: Sure, here's a modified version of the code that implements the requested behavior:
|
||||
|
||||
|
||||
|
||||
```csharp
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
|
||||
|
||||
public class GrapplingHook : MonoBehaviour
|
||||
|
||||
{
|
||||
|
||||
public float hookSpeed = 10f; // speed of the grappling hook
|
||||
|
||||
public float reelSpeed = 5f; // speed at which the player or object is reeled in
|
||||
|
||||
public float pullForce = 15f; // force applied to the player or object when pulled
|
||||
|
||||
|
||||
|
||||
private Rigidbody hookRigidbody;
|
||||
|
||||
private bool hooked = false;
|
||||
|
||||
private GameObject hookedObject = null;
|
||||
|
||||
private bool pullingObject = false;
|
||||
|
||||
|
||||
|
||||
void Start()
|
||||
|
||||
{
|
||||
|
||||
hookRigidbody = GetComponent<Rigidbody>();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Update()
|
||||
|
||||
{
|
||||
|
||||
// check if user has pressed the grappling hook button
|
||||
|
||||
if (Input.GetButtonDown("GrapplingHook"))
|
||||
|
||||
{
|
||||
|
||||
if (!hooked)
|
||||
|
||||
{
|
||||
|
||||
// cast a ray forward to get the target position
|
||||
|
||||
RaycastHit hit;
|
||||
|
||||
if (Physics.Raycast(transform.position, transform.forward, out hit))
|
||||
|
||||
{
|
||||
|
||||
// set the velocity of the grappling hook towards the target
|
||||
|
||||
hookRigidbody.velocity = (hit.point - transform.position).normalized * hookSpeed;
|
||||
|
||||
|
||||
|
||||
// attach the hook to the surface
|
||||
|
||||
hookRigidbody.transform.parent = hit.collider.gameObject.transform;
|
||||
|
||||
hooked = true;
|
||||
|
||||
hookedObject = hit.collider.gameObject;
|
||||
|
||||
|
||||
|
||||
// disable gravity on the hook
|
||||
|
||||
hookRigidbody.useGravity = false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else if (pullingObject)
|
||||
|
||||
{
|
||||
|
||||
// detach the hook from the object and reel the object in
|
||||
|
||||
hookRigidbody.transform.parent = null;
|
||||
|
||||
hooked = false;
|
||||
|
||||
pullingObject = false;
|
||||
|
||||
hookedObject.GetComponent<Rigidbody>().AddForce((transform.position - hookedObject.transform.position).normalized * pullForce);
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
|
||||
{
|
||||
|
||||
// detach the hook from the surface and reel the player in
|
||||
|
||||
hookRigidbody.transform.parent = null;
|
||||
|
||||
hooked = false;
|
||||
|
||||
GetComponent<Rigidbody>().AddForce((hookRigidbody.transform.position - transform.position).normalized * reelSpeed);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// check if the hooked object is still valid (hasn't been destroyed)
|
||||
|
||||
if (hooked && !hookedObject)
|
||||
|
||||
{
|
||||
|
||||
hooked = false;
|
||||
|
||||
hookRigidbody.transform.parent = null;
|
||||
|
||||
hookRigidbody.useGravity = true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// pull the player or object towards the hook
|
||||
|
||||
if (hooked && !pullingObject)
|
||||
|
||||
{
|
||||
|
||||
Rigidbody body = hookedObject.GetComponent<Rigidbody>();
|
||||
|
||||
if (body)
|
||||
|
||||
{
|
||||
|
||||
float massRatio = body.mass / GetComponent<Rigidbody>().mass;
|
||||
|
||||
if (massRatio < 1f)
|
||||
|
||||
{
|
||||
|
||||
// pull the object towards the player
|
||||
|
||||
body.AddForce((transform.position - hookedObject.transform.position).normalized * pullForce);
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
|
||||
{
|
||||
|
||||
// pull the player towards the object
|
||||
|
||||
pullingObject = true;
|
||||
|
||||
GetComponent<Rigidbody>().AddForce((hookedObject.transform.position - transform.position).normalized * pullForce);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
|
||||
{
|
||||
|
||||
// pull the player towards the hook
|
||||
|
||||
GetComponent<Rigidbody>().AddForce((hookRigidbody.transform.position - transform.position).normalized * reelSpeed);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
This code implements the following behavior:
|
||||
|
||||
- When the user presses the grappling hook button, a physical grappling hook is launched towards the target location.
|
||||
|
||||
- If the hook collides with an object, it attaches to the object and starts reeling the object towards the player. If the object's mass is greater than the player's, the player gets pulled towards the object instead.
|
||||
|
||||
- If the user presses the grappling hook button again while attached to an object, the hook detaches from the object and starts reeling the player towards the hook.
|
||||
|
||||
- If the user presses the grappling hook button again while reeling in the player, the player stops and the hook detaches from the surface.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user